A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭金龙 中级黑马   /  2012-12-19 10:36  /  4372 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问为什么使用了BufferedReader或者BufferedWriter之后使用了他们的close,原来文件的FileReader或者FileWriter就可以不使用close的方法了呢?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
可参照接口Closeable,看API得知BufferedReader、BufferedWriter、FileReader、FileWriter都是实现类,这个接口只有一个方法就是close();接口不能够创建实例,只能由子类覆盖其方法,根据API描述close();是这样写的,关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。 这句话就可知流资源关闭全部资源都释放了,所以不用重复关闭,重复关闭也无效。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
因为FileReader和FielWriter其实底层用的是BufferedReader和BufferedWriter,只是将他们封装起来让开发者更方便的使用,所以,使用了BufferedReader或者BufferedWriter之后使用了他们的close,底层其实是使用了、FileReader、FileWriter的close方法。所以,可以不必使用原来文件的FileReader或者FileWriter的close方法也可以关闭资源。
回复 使用道具 举报
凊係柈泩 发表于 2012-12-19 10:45
可参照接口Closeable,看API得知BufferedReader、BufferedWriter、FileReader、FileWriter都是实现类,这个 ...

谢谢!您辛苦鸟!
回复 使用道具 举报
郭金龙 发表于 2012-12-19 11:30
谢谢!您辛苦鸟!

希望能够帮到你屌丝,共同努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马