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

考虑一下BufferedReader,如下所示:

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

在这种情况下,在应用程序结束时,我正在使用writer.close()关闭writer.close()

这还够吗? 用new FileWriter(new File("File.txt"), true) FileWriter创建的new FileWriter(new File("File.txt"), true)是否需要关闭?

没有必要关闭它,因为BufferedWriter负责关闭它包装的编写器。

为了说服你,这是BufferedWriter的close方法的源代码:

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

最好单独关闭每个打开的流,因为它们都是单独的流。 如果嵌套流中发生某些错误,则流不会关闭。 因此,最好只关闭每个嵌套流。

有关详细信息,请参阅以下链接

在Java中关闭嵌套流和编写器的正确方法

是的, writer.close()关闭底层的编写器/流。

您只需要关闭最外面的流。 其余的流是临时的,将自动关闭。 如果您单独创建流然后嵌套它们,那么您需要关闭单个流。 检查此问题也是在Java中关闭嵌套流和编写器的正确方法