是否有必要关闭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中关闭嵌套流和编写器的正确方法