はこのFileReaderはどのように「クローズ」になりますか?
public static void main(String[] a) throws IOException {
FileReader f = new FileReader(a[0]);
System.out.println(f.ready()); // true
doSomethingWithReader(f);
System.out.println(f.ready()); // false
}
private static String doSomethingWithReader(FileReader reader) {
BufferedReader br = null;
try {
br = new BufferedReader(reader);
...
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return line;
}
FileReaderのは、どこにも閉じられていない次の一連のイベントを考えてみたが、何がそれを閉じて?
ラップされたBufferedReaderは、closeメソッドの動作がラッパーツリーを伝播するため、クローズするとクローズします。 –
BufferedReaderがそれを閉じます。興味深いことに、これは、[javadoc](http://docs.oracle.com/javase/6/docs/api/java/io/Reader.html#close%28%29)の 'close ()は、 "任意のシステムリソースを解放する"と述べていますが、具体的には書いていません... – DNA
@DNA正確に:)私は 'BufferedReader' javadocを見ましたが、デバッグを開始するまで接続できませんでした。 – JAM