黑马程序员技术交流社区

标题: IO关闭顺序问题 [打印本页]

作者: 邝雄伟    时间: 2013-2-2 15:30
标题: IO关闭顺序问题
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class IOTest {

        public static void main(String[] args) throws Exception {
                   FileOutputStream fos = new FileOutputStream("d:\\test.txt");
                   OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
                   BufferedWriter bw = new BufferedWriter(osw);
                   bw.write("java IO 流的关闭顺序测试");
                  
                  //这种关闭顺序会报异常: java.io.IOException: Stream closed                                 
                   fos.close();
                   osw.close();
                   bw.close();

                   //这种关闭顺序则不会报异常                                 
                   //bw.close();
                   //osw.close();
                   //fos.close();
                }
}

所有打开的IO流必须按照第二种方式依次关闭吗?    为啥第一种会报 Stream closed 异常?
作者: 杨浩    时间: 2013-2-2 15:55
嗯 - -
你直接只关闭最外层的就行了,bw.close();
关闭bw.close();的时候,它自己会一层层的关闭的。。。
还有看到有人发了Java1.7新特性,会自动关闭资源咯,到时候你就可以只开不用考虑关了。。。
但是我想,如果为了节约系统资源,手动关闭的话,释放资源应该会快一些。
作者: Just_Only    时间: 2013-2-2 15:56
你得看他们三个之间的关系,如果不是按的他们的顺序的关闭的就会报异常




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