正如其他人指出的那样,您只需要关闭外包装即可。
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
}