考虑如下BufferedReader:
writer = new BufferedWriter(new FileWriter(new File("File.txt"), true));
在本例中,在应用程序结束时,我用writer.close()
writer
这就够了吗?用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;
}
}
}
是writer.close()
关闭底层写入器/流
最好单独关闭每个打开的流,因为它们都是单独的流。如果有一些错误发生在嵌套流,那么流将无法接近。所以最好独占地关闭每个嵌套流。
详细信息请参考以下链接:
Java中关闭嵌套流和写入器的正确方法
您只需要关闭最外层的流。其余的流是临时的,将自动关闭。如果您单独创建流,然后嵌套它们,在这种情况下,您需要关闭单个流。在Java中关闭嵌套流和写入器的正确方法