Java文件流“java.io.IOException: Stream closed”異常解決

在項目開發中,今天也碰到類似的情況。因爲同事流關閉順序問題導致異常的情況。

初學者在Java的io流操作中往往最容易忘記的就是處理完之後流的關閉,但是好不容易記起來了,卻又出現java.io.IOException: Stream closed的異常,現在以記事本案例來演示此問題。

該異常提示“流”已經關閉,但是我們觀察源代碼,發現我們打開了兩個流,之後關閉這兩個流,但爲什麼提示流已經關閉呢?

要想解決這一個問題,首先需要了解“修飾類”的概念,在這裏“FileWriter   是被修飾者,BufferedWriter   是修飾者”,也可以通過增加File類緩衝提高學性能。
既然知道“FileWrite”是被修飾者,“BufferedWrite”是修飾者,如果用“嵌套”這個概念來理解這一問題,那麼很明顯,“FileWrite”是嵌套在“BufferedWrite”中的,所以,當先關閉“FileWrite”流時,“BufferedWrite”自然沒有了修飾對象,所以會拋出異常。
解決方法就是先關閉“BufferedWrite”修飾流,再關閉“FillWrite”流即可,如下圖:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章