多重流嵌套(比如BufferedWrite)时各个流的关闭问题。

来源:互联网 发布:淘宝上如何搜发票 编辑:程序博客网 时间:2024/06/05 04:07

以前使用多重流的嵌套时,总是习惯性的从里到外,依次关闭每一个流。

今天才知道,时多此一举,只需要关闭最外层的口=流就行了。

比如:

            FileWriter fileWritter1 = new FileWriter(outfile1);
            BufferedWriter bw1 = new BufferedWriter(fileWritter1);


关闭时只需要关闭fileWritter就可以了:

               fileWritter1.close();


原因在BufferedWriter 的源代码中,这是BufferedWriter 的close()方法源码:



然而这个out对象是一个Writer:


        这个Writer正是BufferedWriter 构造参数中传入的Writer,即本例中的FileWriter 。所以关闭BufferedWriter 时,

其实什么都没有做,仅仅是简单的调用了FileWriter 的close()方法。而且BufferedWriter 的close()方法也是一个

synchronized方法。也会引起多线程情况下的效率问题。所以多层流嵌套时,只需要关闭最外层的流即可。


0 0