首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要同时关闭FileReader和BufferedReader ()吗?

我需要同时关闭FileReader和BufferedReader ()吗?
EN

Stack Overflow用户
提问于 2009-09-07 10:15:48
回答 6查看 181.8K关注 0票数 209

我正在使用包装在FileReader周围的BufferedReader读取本地文件:

代码语言:javascript
复制
BufferedReader reader = new BufferedReader(new FileReader(fileName));
// read the file
// (error handling snipped)
reader.close();

我是否也需要对FileReader执行close()操作,或者由包装器来处理?我见过人们这样做的代码:

代码语言:javascript
复制
FileReader fReader = new FileReader(fileName);
BufferedReader bReader = new BufferedReader(fReader);
// read the file
// (error handling snipped)
bReader.close();
fReader.close();

这个方法是从servlet调用的,我希望确保没有留下任何句柄。

EN

回答 6

Stack Overflow用户

发布于 2009-09-07 10:20:11

BufferedReader的源代码显示,当您关闭BufferedReader时,底层是关闭的。

票数 7
EN

Stack Overflow用户

发布于 2009-09-07 10:19:58

根据BufferedReader来源的说法,在这种情况下,bReader.close调用fReader.close,因此从技术上讲,您不必调用后者。

票数 6
EN

Stack Overflow用户

发布于 2018-08-03 16:12:28

从Java7开始,您可以使用try-with-resources Statement

代码语言:javascript
复制
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    return br.readLine();
}

因为BufferedReader实例是在try-with-resource语句中声明的,所以无论try语句是正常完成还是突然完成,它都将被关闭。因此,您不需要在finally语句中自己关闭它。(嵌套资源语句也是如此)

这是推荐的使用资源的方法,有关详细信息,请参阅documentation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1388602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档