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

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

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

比如:

            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方法。也会引起多线程情况下的效率问题。所以多层流嵌套时,只需要关闭最外层的流即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值