PHP中文网2017-04-18 09:32:18
直接呼叫最外層的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一下我也沒辦法
阿神2017-04-18 09:32:18
如果這個問題是:BufferedReader關閉了,有必要關閉InputStreamReader和InputStream嗎? ,那這個問題還正常一點........
Java的io包裡面的stream和reader,都用的是裝飾者模式。你只需要呼叫最外層裝飾者的close方法,它就能將其所裝飾的stream或reader也一併關閉。
實在不行,打開BufferedReader
的源代碼看看close方法,就會發現它再這個方法裡關閉了它所裝飾的reader.
再實在不行,推薦在下的拙作一篇,也許能解決你的疑惑《Java IO : 流,以及裝飾器模式在其上的運用》
怪我咯2017-04-18 09:32:18
都要關的,依序一個個關,最好在finally中
finally{
try{
br.close();
isr.close();
is.close();
}catch(Exception e){
......
}
}
最先創建的最後關,最後創建的最先關