簡體   English   中英

什么時候關閉HSSFWorkbook的構造函數中使用的InputStream對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM