14

以下のように BufferedReader を検討してください。

writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));

この場合、アプリケーションの最後に、で閉じてwriterいますwriter.close()

これで十分でしょうか?で作成した FileWriter をnew FileWriter(new File("File.txt"), true)閉じる必要はありませんか?

4

4 に答える 4

18

BufferedWriter がラップするライターを閉じる処理を行うため、これを閉じる必要はありません。

あなたを納得させるために、これは BufferedWriter の close メソッドのソース コードです。

public void close() throws IOException {
    synchronized (lock) {
        if (out == null) {
            return;
        }
        try {
            flushBuffer();
        } finally {
            out.close();
            out = null;
            cb = null;
        }
    }
}
于 2013-05-16T10:24:56.447 に答える
3

はいwriter.close()、基礎となるライター/ストリームも閉じます。

于 2013-05-16T10:24:28.147 に答える
3

すべてが別のストリームであるため、開いている各ストリームを個別に閉じることをお勧めします。ネストされたストリームで何らかのエラーが発生した場合、ストリームは近づきません。したがって、ネストされた各ストリームを排他的に閉じることをお勧めします。

詳細については、次のリンクを参照してください。

Java でネストされたストリームとライターを閉じる正しい方法

于 2013-05-16T10:26:18.830 に答える