我正在使用包装在FileReader周围的BufferedReader读取本地文件:
BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();
我是否也需要对FileReader
执行close()
操作,或者由包装器来处理?我见过人们这样做的代码:
FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();
这个方法是从servlet调用的,我希望确保没有留下任何句柄。
发布于 2009-09-07 10:20:11
BufferedReader的源代码显示,当您关闭BufferedReader时,底层是关闭的。
发布于 2009-09-07 10:19:58
根据BufferedReader来源的说法,在这种情况下,bReader.close调用fReader.close,因此从技术上讲,您不必调用后者。
发布于 2018-08-03 16:12:28
从Java7开始,您可以使用try-with-resources Statement
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
因为BufferedReader
实例是在try-with-resource语句中声明的,所以无论try语句是正常完成还是突然完成,它都将被关闭。因此,您不需要在finally
语句中自己关闭它。(嵌套资源语句也是如此)
这是推荐的使用资源的方法,有关详细信息,请参阅documentation
https://stackoverflow.com/questions/1388602
复制相似问题