认证0级讲师
直接呼叫最外層的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--
就是一個鏈條 你關閉最外面的 最外面的關閉裡面的 裡面的關閉更裡面的
當然你如果硬要說關閉可能失敗 一定要finally一下我也沒辦法
如果這個問題是:BufferedReader關閉了,有必要關閉InputStreamReader和InputStream嗎? ,那這個問題還正常一點........
Java的io包裡面的stream和reader,都用的是裝飾者模式。你只需要呼叫最外層裝飾者的close方法,它就能將其所裝飾的stream或reader也一併關閉。
實在不行,打開BufferedReader的源代碼看看close方法,就會發現它再這個方法裡關閉了它所裝飾的reader.
BufferedReader
再實在不行,推薦在下的拙作一篇,也許能解決你的疑惑《Java IO : 流,以及裝飾器模式在其上的運用》
都要關的,依序一個個關,最好在finally中
finally{ try{ br.close(); isr.close(); is.close(); }catch(Exception e){ ...... } }
最先創建的最後關,最後創建的最先關
直接呼叫最外層的close()就可以了
update:
http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--
http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--
就是一個鏈條 你關閉最外面的 最外面的關閉裡面的 裡面的關閉更裡面的
當然你如果硬要說關閉可能失敗 一定要finally一下我也沒辦法
如果這個問題是:BufferedReader關閉了,有必要關閉InputStreamReader和InputStream嗎? ,那這個問題還正常一點........
Java的io包裡面的stream和reader,都用的是裝飾者模式。你只需要呼叫最外層裝飾者的close方法,它就能將其所裝飾的stream或reader也一併關閉。
實在不行,打開
BufferedReader
的源代碼看看close方法,就會發現它再這個方法裡關閉了它所裝飾的reader.再實在不行,推薦在下的拙作一篇,也許能解決你的疑惑《Java IO : 流,以及裝飾器模式在其上的運用》
都要關的,依序一個個關,最好在finally中
最先創建的最後關,最後創建的最先關