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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

落木萧萧

高级黑马

  • 黑马币:68

  • 帖子:291

  • 精华:0

© 落木萧萧 高级黑马   /  2013-9-22 18:58  /  1241 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 落木萧萧 于 2013-9-22 20:08 编辑
  1. BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("students.txt")));
复制代码
如上代码,当我需要关闭reader的时候,还要关闭其他几个直接new出来的流么?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

4 个回复

倒序浏览
不需要,直接关reader流就可以了。
回复 使用道具 举报
胡智 发表于 2013-9-22 19:00
不需要,直接关reader流就可以了。

为什么呢?
回复 使用道具 举报

因为BufferedReader是用来缓冲的,InputStreamReader是用来对流进行转换的,实际对数据进行读取的是FileInputStream。
当你关闭BufferedReader流,实际就是关闭对数据操作的流。所以你只需要关BufferedReader就可以了。
回复 使用道具 举报
如果是BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt")));只需要br.close();
如果是InputStream is = new FileInputStream("test.txt");
         InputStreamReader isr = new InputStreamReader(is);
         BufferedReader br = new BufferedReader(isr);
   则需要逐一关闭
          br.close();
          isr.close();
          is.close();

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马