我想知道jxls的XlsReader类是否关闭工作簿。
我的代码是这样的:

XLSReader mainReader = ReaderBuilder.buildFromXML(inputStreamXml);
mainReader.read(inputStreamXLS, beans);


XLSReader中没有像close这样的方法。当工作簿关闭时,我试图在内部代码中找到一些要点,但找不到。
这是read方法的内部实现:

public XLSReadStatus read(InputStream inputXLS, Map beans) throws
        IOException, InvalidFormatException{
        readStatus.clear();
        Workbook workbook = WorkbookFactory.create(inputXLS);
        for(int sheetNo = 0; sheetNo < workbook.getNumberOfSheets(); sheetNo++){
            readStatus.mergeReadStatus(readSheet(workbook, sheetNo, beans));
        }
        return readStatus;
}


有时xls文件被应用程序锁定,因为我在代码中找不到资源未释放的任何地方,所以我想知道问题是否出在jxls上。显然,XLSReader不会关闭工作簿。我的应用程序关闭了inputStreams。应用程序还需要关闭工作簿吗?

最佳答案

XLSReader不会关闭工作簿。原因是jxls-reader是一个旧模块,并且在创建它时,POI中没有工作簿的close()方法。

现在,我认为应该使用该方法关闭工作簿并释放基础文件资源。因此,现在是在jxls-reader issue tracker中引发错误的好时机

10-07 19:35
查看更多