鍍金池/ 問答/Java/ 文件流什么時候該關(guān)閉

文件流什么時候該關(guān)閉

XWPFDocument tamplate = new XWPFDocument(new FileInputStream("C:\\1.docx"));

這種情況下的流沒有賦給變量來使用,直接用匿名方法調(diào)用是否需要關(guān)閉流呢?還請問下在子方法里的IOExcept往上層方法拋的時候,上層方法在子方法無返回值情況下只能打印異常而不能對該流做任何操作是么?比如finally里寫什么fis.close()之類的操作.

回答
編輯回答
風(fēng)畔

匿名對象會在GC的時候回收,回收之前會調(diào)用finalize方法,F(xiàn)ileInputStream的源碼里在finalize方法會調(diào)用close方法,所以在GC時候流就會被關(guān)閉,但是不推薦這樣做,這樣資源沒有及時釋放,還是手動close好。

2018年3月29日 21:03
編輯回答
爛人

如果你用Java 8 推薦這樣寫

try(FileInputStream fi=new FileInputStream("C:\\1.docx")){
    XWPFDocument tamplate = new XWPFDocument(fi);
    ......
}

這樣順便還可以處理異常.

如果你還沒用Java 8, 推薦你用Java 8

2017年6月24日 05:24
編輯回答
怪痞

這個不需要你關(guān)注了,XWPFDocument在讀取完畢后會自己關(guān)閉的

2017年7月13日 06:21