【发布时间】:2018-07-24 14:42:52
【问题描述】:
在我的代码中,我使用的是 Apache POI 库类 - HSSFWorkbook。
try {
testBook.write(outputStream);
} catch (Exception e) {
throw new ExportException(e);
}
如您所见,我将FileOutputStream 对象传递给write() 方法。
我的问题是,是否需要在 finally 块或 POI 内部关闭此流对象?
我看到POIFSFileSystem.writeFilesystem() 方法是从HSSFWorkbook.write() 方法和writeFilesystem() 中调用的
方法后面的代码是在流对象被传递给writeBlocks() 方法的地方编写的。但我不确定在运行时
writer 变量将引用哪个类的哪个实例。所以我最后不知道那个流对象发生了什么。
请帮忙。
iter = writers.iterator();
while (iter.hasNext())
{
BlockWritable writer = ( BlockWritable ) iter.next();
writer.writeBlocks(stream);
}
【问题讨论】:
-
把它包在
try-with-resources块中,不用担心。 -
还请查阅 javadocs - 这就是它们的用途
-
@RobbyCornelissen
outputStream作为方法参数传递。所以我不能在try-with-resourcesstaement 声明它 -
你在某处声明它,不是吗?
-
我已经声明了那个操作系统变量并将它传递给一个方法。我已经提到了该方法的主体
标签: java apache-poi fileoutputstream