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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

yuxingxing1988

注册黑马

  • 黑马币:

  • 帖子:

  • 精华:

© yuxingxing1988 注册黑马   /  2012-7-2 13:42  /  2884 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在javaio流中,当同时出现输入流与输出流时(如拷贝文件),是先关输入流还是先关输出流,在关流的时候可以随便先关哪个都可以吗?求解答

评分

参与人数 1黑马币 +1 收起 理由
韦念欣 + 1 好好学习IO技术哦

查看全部评分

6 个回复

倒序浏览
一般关闭流都是在程序最后,先关那个都是可以的,只是关闭一个资源而已。。。
回复 使用道具 举报
好像关流没有顺序吧.....
回复 使用道具 举报
关闭输入输出流是为了回收资源,这是因为IO设备在打开时会占用资源,如果不用close关闭,占用的资源就不会释放。而当文件读写完成后,输入流和输出流都没有数据,先关闭哪个都可以,顺序没有影响。
回复 使用道具 举报
本帖最后由 李建强 于 2012-7-2 19:35 编辑

举个例子:
我们新建一个FileReader对象,使用BufferedReader包装,
文件会直接进入缓冲区,可以直接操作缓存,不用频繁读取硬盘。

这种情况应该直接关闭包装类,包装类关闭之前会把被包装类关闭。
如果被包装类已被关闭,包装类关闭被包装类会报IOException: Stream closed。
回复 使用道具 举报
哪个都可以,没有顺序
回复 使用道具 举报
关闭流是为了释放与该流有关的系统资源,当流关闭之后,再进行read等方法会抛出IO异常,一般情况是先打开的后关闭,后打开的先关闭。还有以一种情况是如果流A依赖流B那么先关闭流A 就好像我们BufferReader等包装类,肯定事先要有一个流对象,所以要先关闭缓冲流,否则你先关闭要包装的流对象,那他包装谁去,而且包装流关闭的时候会将你要包装的流也关闭掉

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1 赞一个!

查看全部评分

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