3 回答
TA贡献1804条经验 获得超8个赞
没有。
BufferedReader.close()
根据javadoc为BufferedReader和InputStreamReader 关闭流
以及
FileReader.close()
做。
TA贡献1785条经验 获得超8个赞
正如其他人指出的那样,您只需要关闭外包装即可。
BufferedReader reader = new BufferedReader(new FileReader(fileName));
如果BufferedReader构造函数抛出异常(例如OutOfMemoryError),则很有可能泄漏文件句柄。如果您的应用处于这种状态,则清理的谨慎程度可能取决于您不剥夺操作系统可能要分配给其他程序的资源的重要性。
所述可关闭的,如果一个封装构造是可能在Java 5或6失败界面可用于:
Reader reader = new FileReader(fileName);
Closeable resource = reader;
try {
BufferedReader buffered = new BufferedReader(reader);
resource = buffered;
// TODO: input
} finally {
resource.close();
}
Java 7代码应使用try-with-resources模式:
try (Reader reader = new FileReader(fileName);
BufferedReader buffered = new BufferedReader(reader)) {
// TODO: input
}
TA贡献1818条经验 获得超8个赞
检查源代码后,我发现该示例:
FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
BufferedReader对象上的close()方法将调用Reader类的抽象close()方法,该类最终将在InputStreamReader类中调用已实现的方法,然后关闭InputStream对象。
因此,仅bReader.close()就足够了。
添加回答
举报