以下のようにBufferedReaderを検討してください。
_writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));
_
この場合、アプリケーションの最後で、writer
をwriter.close()
で閉じています。
これで十分でしょうか? new FileWriter(new File("File.txt"), true)
で作成されたFileWriterを閉じる必要はありませんか?
BufferedWriterは、ラップするライターを閉じる処理を行うため、閉じる必要はありません。
あなたを納得させるために、これはBufferedWriterのcloseメソッドのソースコードです:
public void close() throws IOException {
synchronized (lock) {
if (out == null) {
return;
}
try {
flushBuffer();
} finally {
out.close();
out = null;
cb = null;
}
}
}
すべてが別々のストリームであるため、開いている各ストリームを個別に閉じることをお勧めします。ネストされたストリームでエラーが発生した場合、ストリームは閉じられません。したがって、ネストされた各ストリームを排他的に閉じることをお勧めします。
詳細については、次のリンクを参照してください。
はいwriter.close()
は、基礎となるライター/ストリームも閉じます。
最も外側のストリームのみを閉じる必要があります。残りのストリームは一時的なものであり、自動的に閉じられます。ストリームを個別に作成してネストした場合、その場合は個々のストリームを閉じる必要があります。この質問もチェックしてください Javaでネストされたストリームとライターを閉じる正しい方法