先看一段代码:
FileOutputStream out1 = new FileOutputStream("D:\\SingleTon.txt");
ObjectOutputStream out2 = new ObjectOutputStream(out1);
out1.close();//是否需要关闭内层的IO流?
out2.close();
考虑一下,像这样的嵌套IO流,是否应该从内到外依次关闭呢?
答案是不需要!这些IO类都是JDK自带的,调用了最外层的close方法,其实是一层一层向内调用了最内层的IO类的close方法,这也就是装饰者模式。
当然你肯定想问,为什么我之前自内向外逐层关闭也不会抛出异常?
因为就算你对某个流重复关闭多次,也不会抛出异常。
本文探讨了Java中嵌套IO流的正确关闭方式。通过一个示例代码说明,即使只关闭外层流也能确保所有流被正确关闭,这是因为装饰者模式的设计。文章还解释了多次关闭同一流不会引发异常的原因。
1123

被折叠的 条评论
为什么被折叠?



