考虑如下 BufferedReader:
writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));
在这种情况下,在应用程序结束时,我将关闭writer
withwriter.close()
这够了吗?new FileWriter(new File("File.txt"), true)
不需要关闭创建的 FileWriter吗?
考虑如下 BufferedReader:
writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));
在这种情况下,在应用程序结束时,我将关闭writer
withwriter.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;
}
}
}
Yeswriter.close()
也会关闭底层的 writers/streams。
您只需要关闭最外层的流。其余的流是临时的,将自动关闭。如果您分别创建流然后嵌套它们,在这种情况下,您需要关闭单个流。检查这个问题也正确的方法来关闭Java中的嵌套流和编写器