黑马程序员技术交流社区

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

作者: 麦列霍夫    时间: 2015-6-5 09:41
标题: 关于流对象的关闭问题
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(files));

  String line = null ;
        While((line=br.readLine())!=null){
                bw.write(line);
                bw.newLine();
                bw.flush();
}}

        br.close();
        bw.close();


用IO流进行文件传输之后,为了节约内存空间我们都要把相应的流对象关闭掉。但是针对上面的代码,BufferReader()里面传入的也是一个流对象:new FileReader(file),那么为什么再程序结束后不需要关闭呢 ?面试的时候被问到过,感觉自己解释的不太好,求大神专业赐教。
作者: a5702727    时间: 2015-6-5 09:47
我也被问过这问题
作者: 少年闰土    时间: 2015-6-5 10:10
正在学习中,完了就可以帮你了
作者: 路途遥远    时间: 2015-6-5 11:19
BufferedReader br = new BufferedReader(new FileReader(file));
new BufferedReader时,new FileReader(file)作为参数,也相当于把BufferedReader包裹在FileReader外面了,
关闭了BufferedReader就无需在关闭FileReader了。就像大的管道里面套了一个小管道,关闭了大的,里面的小的自然
就关了
作者: wangkai    时间: 2015-6-5 13:50
学习下学习
作者: 景彬    时间: 2015-6-5 14:45
关闭了BufferedReader就无需在关闭FileReader了。就像大的管道里面套了一个小管道,关闭了大的,里面的小的自然就关了
这个是正确的吗

作者: 欧阳文    时间: 2015-6-5 15:33
外面嵌套里面的,关闭外面的流就不需要关闭里面的流...
作者: 小车车    时间: 2015-6-5 17:54
学习一下!
作者: 麦列霍夫    时间: 2015-6-12 23:13
路途遥远 发表于 2015-6-5 11:19
BufferedReader br = new BufferedReader(new FileReader(file));
new BufferedReader时,new FileReader(f ...

嗯,学习了。
作者: 麦列霍夫    时间: 2015-6-12 23:14
欧阳文 发表于 2015-6-5 15:33
外面嵌套里面的,关闭外面的流就不需要关闭里面的流...

跟我面试时候回答的差不多,但是老师可能需要更具体的解释
作者: 麦列霍夫    时间: 2015-6-12 23:15
少年闰土 发表于 2015-6-5 10:10
正在学习中,完了就可以帮你了


作者: 麦列霍夫    时间: 2015-6-12 23:16
景彬 发表于 2015-6-5 14:45
关闭了BufferedReader就无需在关闭FileReader了。就像大的管道里面套了一个小管道,关闭了大的,里面的小的 ...

四楼那个回答应该就是比较合适的理解了
作者: 紫夜流星    时间: 2015-6-13 09:21
看一下            




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