【发布时间】:2010-11-26 04:37:58
【问题描述】:
我正在使用包裹在 FileReader 周围的 BufferedReader 读取本地文件:
BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();
我是否还需要close() FileReader,或者包装器会处理这个问题?
我见过人们做这样的事情的代码:
FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();
这个方法是从一个 servlet 调用的,我想确保我没有打开任何句柄。
【问题讨论】:
-
你知道,您可以阅读源代码以获取此类信息。全部在 JDK 安装目录的 src.zip 中,或者您可以在线阅读,例如 docjar.com/html/api/java/io/BufferedReader.java.html
-
告诉别人阅读源代码比说“RTFM!”更糟糕。如果源有错误怎么办?隐含地我们想知道正确的行为是什么?
-
嗯...从这个角度来看:指向 API 规范也好不到哪里去。如果源没有导致其行为不像文档中指定的错误,则您不能依赖文档。所以没有好办法来回答这样的问题。
-
@Atmocreations 下一个维护版本可以愉快地修复一个你依赖的错误,如果你只看源代码。您确实需要知道记录在案的行为是什么。当然,查看源代码并没有错,但你不能假设源代码不会改变。更改记录在案的行为通常比修复错误要更多。
标签: java io bufferedreader filereader