是否有必要关闭FileWriter,前提是它是通过BufferedWriter编写的?

hipsum 发布于 4 天前 bufferedwriter 最后更新 4 天前 0 浏览

考虑如下的BufferedReader:

writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));
在这种情况下,在应用程序结束时,我将通过writer.close()关闭writer 这会足够吗?用new FileWriter(new File("File.txt"), true)创建的FileWriter不需要关闭吗?
已邀请:

yut

赞同来自:

writer.close()也关闭底层写入者/流。

yeum

赞同来自:

没有必要关闭它,因为BufferedWriter负责关闭它包装的编写器。 为了说服你,这是BufferedWriter的close方法的源代码:

public void close() throws IOException {
    synchronized (lock) {
        if (out == null) {
            return;
        }
        try {
            flushBuffer();
        } finally {
            out.close();
            out = null;
            cb = null;
        }
    }
}

podio

赞同来自:

最好单独关闭每个打开的流,因为它们都是单独的流。 如果嵌套流中发生某些错误,则流不会关闭。 因此,最好只关闭每个嵌套流。 有关详细信息,请参阅以下链接 Correct way to close nested streams and writers in Java

est_et

赞同来自:

您只需要关闭最外面的流。其余的流是临时的,将自动关闭。如果您单独创建流然后嵌套它们,那么您需要关闭单个流。检查此问题也是Correct way to close nested streams and writers in Java