ByteArrayOutputStream或ByteArrayInputStream不需要关闭流原因分析
2016-12-30 12:35
417 查看
在解压图片的时候发现ByteArrayOutputStream不需要关闭,为啥呢?
ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收。所以不需要关流。如下图所示,ByteArrayOutputStream内部是数组:
![](https://img-blog.csdn.net/20161230124140146?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjY2ODkyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后再看看FileOutputStream的构造:
![](https://img-blog.csdn.net/20161230124439300?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjY2ODkyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
很明显FileOutputStream的构造方法打开了IoBridge,
也就是说,指向内存的流可以不用关闭,指向存储卡/硬盘的流一定要关闭。
ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收。所以不需要关流。如下图所示,ByteArrayOutputStream内部是数组:
然后再看看FileOutputStream的构造:
很明显FileOutputStream的构造方法打开了IoBridge,
也就是说,指向内存的流可以不用关闭,指向存储卡/硬盘的流一定要关闭。
相关文章推荐
- java.io.ByteArrayInputStream 源码分析
- Java IO 系列源码分析——ByteArrayInputStream和ByteArrayOutputStream
- Java IO:ByteArrayInputStream使用详解及源码分析
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
- java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
- java IO流分析:ByteArrayInputstream 和 BufferedInputStream
- PipedInputStream与PipedOutputStream类 ByteArrayInputStream与ByteArrayOutputStream类 2011-4-22
- ByteArrayInputStream
- ByteArrayInputStream和ByteArrayOutputStream类
- java.ByteArrayInputStream-ByteArrayOutputStream
- JAVA IO系列----ByteArrayInputStream和ByteArrayOutputStream类
- ByteArrayInputStream和ByteArrayOutputStream
- java.ByteArrayInputStream-ByteArrayOutputStream
- ByteArrayOutputStream和ByteArrayInputStream详解 &&&管道流
- ByteArrayOutputStream 和ByteArrayInputStream详解
- 黑马程序员:将字符串的所有字符转化为大写(ByteArrayOutPutStream/ByteArrayInPutStream)
- ByteArrayInputStream与ByteArrayOutputStream类
- Re: help on converting bytearrayinputstream to objectinputstream [小糊涂的灵感]