eat*_*ode 4 apache-poi autocloseable
下面是要创建的示例代码片段SXSSFWorkbook:
try(SXSSFWorkbook wb = new SXSSFWorkbook()) {
//...
} finally {
wb.dispose(); //wb not accessible over here, so can't use try with resource
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果我将 try 与资源一起使用,则无法dispose() SXSSFWorkbook在 finally 中使用,因为wb在 finally 块中将无法访问变量。
我想知道正在处理删除临时文件所必需的工作簿,或者因为SXSSFWorkbook是AutoCloseable,所以尝试使用资源会处理它。
不确定是否有人apache poi会回答这个问题。但是apache poi是开源的。所以每个程序员都可以通过查看代码来回答这个问题。
状态 2018 年 5 月,apache poi版本3.17。
public class SXSSFWorkbook implements Workbook
那么为什么这可以成为在 try with 资源中使用的资源呢?因为
public interface Workbook extends Closeable, Iterable<Sheet>
所以org.apache.poi.ss.usermodel.Workbook扩展java.io.Closeable等实现 this 的类必须提供一个方法 close。
如您所见,单个SheetDataWriters 将被关闭,然后内部XSSFWorkbook _wb将被关闭。
SheetDataWriter.close只刷新并关闭Writer _out.
所以不,dispose直到现在(2018 年 5 月)在apache poi版本中自动关闭时都没有调用3.17
并且只有SheetDataWriter.dispose会删除TempFile _fd为每个工作表创建的。
| 归档时间: |
|
| 查看次数: |
4580 次 |
| 最近记录: |