java - inputStream关闭了,还有必要关闭InputStreamReader和BufferedReader吗?
PHP中文网
PHP中文网 2017-04-18 09:30:18
0
3
1200
PHP中文网
PHP中文网

认证0级讲师

全部回覆(3)
Ty80

直接呼叫最外層的close()就可以了


update:

http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--

Closes the stream and releases any system resources associated with it

http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--

Closes the stream and releases any system resources associated with it

就是一個鏈條 你關閉最外面的 最外面的關閉裡面的 裡面的關閉更裡面的


當然你如果硬要說關閉可能失敗 一定要finally一下我也沒辦法

阿神

如果這個問題是:BufferedReader關閉了,有必要關閉InputStreamReader和InputStream嗎? ,那這個問題還正常一點........

Java的io包裡面的stream和reader,都用的是裝飾者模式。你只需要呼叫最外層裝飾者的close方法,它就能將其所裝飾的stream或reader也一併關閉。

實在不行,打開BufferedReader的源代碼看看close方法,就會發現它再這個方法裡關閉了它所裝飾的reader.

再實在不行,推薦在下的拙作一篇,也許能解決你的疑惑《Java IO : 流,以及裝飾器模式在其上的運用》

刘奇

都要關的,依序一個個關,最好在finally中

finally{
    try{
        br.close();
        isr.close();
        is.close();
    }catch(Exception e){
        ......
    }
}

最先創建的最後關,最後創建的最先關

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板