鍍金池/ 問答/Java/ Java:匿名文件流的關閉問題

Java:匿名文件流的關閉問題

譬如下面這個語句,有兩個匿名文件流,OutputStreamWriter和FileOutputStream

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile)));

如果僅僅對writer.close(),而不管內部的兩個匿名文件流,有何問題嗎?

回答
編輯回答
練命

只需要關閉最外層流,它自己會遞歸把里層的流關閉

2017年7月25日 13:14
編輯回答
賤人曾

沒問題,其實這段代碼只創(chuàng)建了一個流,這種寫法是設計模式之包裝模式

2017年11月4日 09:58
編輯回答
短嘆
FileOutputStream fos = new FileOutputStream(targetFile);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter writer = new BufferedWriter(osw);

writer.close();

writer.close()函數內部將out(也就是構造函數傳入的osw)置為null,此時osw懸空,會被GC掉,同時FileOutputStream重寫了finalize()方法,在此方法中關閉了文件流。

2017年10月11日 18:26