2017-11-21 3 views
0

jlsls의 XlsReader 클래스가 통합 문서를 닫는 지 알고 싶습니다. 내 코드는 다음과 같은 것입니다 :JXLS의 XLSReader가 통합 문서를 닫습니까?

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

XLSReader에서 사용할 수있는 가까운 같이있는 방법은 없습니다. 통합 문서가 닫혀 있지만 찾을 수 없을 때 내부 코드에서 어떤 점을 찾으려고했습니다. 이 읽기 ​​방법의 내부 구현 : 나는 리소스가 해제되지 않습니다 내 코드의 어느 지점을 찾을 수 없기 때문에 때때로 XLS 파일, 응용 프로그램에 의해 잠겨

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; 
} 

가, 내가 궁금해 문제는 jxls입니다. 분명히 XLSReader는 통합 문서를 닫지 않습니다. 내 응용 프로그램이 inputStream을 닫습니다. 응용 프로그램에서 통합 문서를 닫아야합니까?

답변

1

XLSReader가 통합 문서를 닫지 않습니다. 그 이유는 jxls-reader가 오히려 오래된 모듈이기 때문에 POI에 workbook close() 메소드가 없었기 때문입니다.

이제이 방법을 사용하여 통합 문서를 닫고 기본 파일 리소스를 릴리스해야한다고 생각합니다. 따라서 jxls-reader issue tracker

+1

문제에서 버그를 제기하는 것이 좋습니다. https://bitbucket.org/leonate/jxls-reader/issues/7/xlsreader-doesnt-close-the-workbook –

관련 문제