黑马程序员技术交流社区

标题: java流对象的关流问题 [打印本页]

作者: yuxingxing1988    时间: 2012-7-2 13:42
标题: java流对象的关流问题
在javaio流中,当同时出现输入流与输出流时(如拷贝文件),是先关输入流还是先关输出流,在关流的时候可以随便先关哪个都可以吗?求解答

作者: 王达    时间: 2012-7-2 14:01
一般关闭流都是在程序最后,先关那个都是可以的,只是关闭一个资源而已。。。
作者: 杨锦    时间: 2012-7-2 15:19
好像关流没有顺序吧.....
作者: 黄丽慧    时间: 2012-7-2 16:21
关闭输入输出流是为了回收资源,这是因为IO设备在打开时会占用资源,如果不用close关闭,占用的资源就不会释放。而当文件读写完成后,输入流和输出流都没有数据,先关闭哪个都可以,顺序没有影响。
作者: 李建强    时间: 2012-7-2 19:33
本帖最后由 李建强 于 2012-7-2 19:35 编辑

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

这种情况应该直接关闭包装类,包装类关闭之前会把被包装类关闭。
如果被包装类已被关闭,包装类关闭被包装类会报IOException: Stream closed。

作者: 万宝东    时间: 2012-7-2 19:40
哪个都可以,没有顺序
作者: 周朋飞    时间: 2012-7-2 19:57
关闭流是为了释放与该流有关的系统资源,当流关闭之后,再进行read等方法会抛出IO异常,一般情况是先打开的后关闭,后打开的先关闭。还有以一种情况是如果流A依赖流B那么先关闭流A 就好像我们BufferReader等包装类,肯定事先要有一个流对象,所以要先关闭缓冲流,否则你先关闭要包装的流对象,那他包装谁去,而且包装流关闭的时候会将你要包装的流也关闭掉




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2