[英]When is it safe to close the InputStream used by PreparedStatement.setBlob?
[英]When to close the InputStream object used in the constructor of HSSFWorkbook?
我正在使用HSSFWorkbook
,我想知道應該在哪里關閉在構造HSSFWorkbook
對象時使用的InputStream
對象。 HSSFWorkbook 是否在其構造函數本身中關閉流? 還是我們需要手動關閉它? 我們可以在構造函數調用后立即關閉它嗎? 即, HSSFWorkbook
對象是否僅在其構造函數中使用InputStream
對象? 或者將來也可以使用它(在這種情況下我們無法關閉它)? 謝謝你。
public HSSFWorkbook loadSheet(File file) throws FileNotFoundException, IOException {
return new HSSFWorkbook(new FileInputStream(file));
}
HSSFWorkbook
的構造函數沒有說明InputStream
將關閉還是保持打開狀態,因此乍一看,您不應假設它會關閉。 然而,深入挖掘,另一方面,在構造函數本身中使用的類的構造函數確實清楚地說明了它的行為。
至少在Apache的POI 4.0.0調用new HSSFWorkbook(inputStream)
將導致一個呼叫new POIFSFileSystem(inputStream)
在其實施,似乎的確始終關閉流和構造資料證實了這一點。
這似乎指向您問題的以下答案:
HSSFWorkbook
是否在其構造函數本身中關閉流? 是的,間接的。POIFSFileSystem
,這似乎不太可能。HSSFWorkbook
對象是否僅在其構造函數中使用InputStream
對象? 顯然如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.