ByteArrayOutputStream或ByteArrayInputStream是否需要手动关闭流-为什么

教程分享 (956) 2023-12-20 19:32:02

操作示例图-6d36c13a3f0b4165acdca7826f0b7cd8.png

在处理图片的时候发现ByteArrayOutputStream不需要关闭,为啥? 

原理:

ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收。所以不需要关流。

源码参考:

ByteArrayOutputStream内部是数组: 

操作示例图-5be649817e1e42c1827fd6bee626b8cb.png

对比FileOutputStream的构造

操作示例图-8255fe50e52540f8829aaf804da0a031.png

 

很明显FileOutputStream的构造方法打开了IoBridge, 
也就是说,指向内存的流可以不用关闭,指向存储卡/硬盘的流一定要关闭。

 

通过ByteArrayInputStream和ByteArrayOutputStream的源码close()方法也可以发现,调用它们的close()方法啥也不会发生。

 

操作示例图-3d5b30bead6f4620a31c3364fd5f9c9f.png

 

操作示例图-f16a4b939e4b44aaae5637caba7eb1ee.png

 

 

从上图看到,确实,这两个流操作不需要调用close也可以,内部什么实现都没有。对比下方FileOutputStream有内容:

操作示例图-f51ddb584750437ead30ab013d7ead4f.png

操作示例图-1a932e6b42b041d89df6bf1ce347dce1.png

 

 

 

 

 

 

 

 

https://www.leftso.com/article/2312201735064281.html

相关文章
在处理图片的时候发现ByteArrayOutputStream不需要关闭,为啥?原理:ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向...
Nginx 限流组件limit_req limit_req作用: 限制用户(同一个ip)在给定时间内HTTP请求的数量, 流量限制主要用作安全目的, 可以防止大量请求的...
情况说明后端提供的接口返回的二进制流,且是post方法实现代码wx.request({url:'接口地址',method:'post',header:{"token":'后端接口需要的token...
jdk8新特性流的使用
eclipse如何关闭java代码中某些部分/片段代码不被格式化,eclipse,代码部分不被格式化,How to turn off the Eclipse code formatter for...
1.安装ufw防火墙sudo apt-get install ufw提示:除开精简版一般云提供商LTS版本(18/22LTS)都是默认安装的。 2.查看防火墙启
某些时候,我们使用Java得POI工具内得XSSFSheet来创建excel表格,用于导出数据,但是下载到本地用excel打开得时候就会以下提示:​文件兼容错误提示解决办法: @GetMap...
       学习使用Gson JsonReader类,这是一个基于拉的流式JSON解析器,它有助于将JSON作为标记流来读取​GSON1. JsonReader是什么JsonReader是流式...
有时候服务器运行的好好的,突然就无法连接无法执行任何操作了,强制重启后需要通过系统日志排查系统故障的原因只有root特权程序才能正常关闭系统。因此,当系统以正常
方案一$("#dialog-modal").modal({backdrop:"static",//点击空白处不关闭对话框show:false,//按esc键盘不关闭.})方案二在弹框元素(下面以...
Microsoft Edge 浏览器退出(关闭)时清楚浏览记录随着Microsoft Edge不断升级,在Windows 11上的Microsoft Edge浏览器退出时候清除浏览记录和之前的界...
mysql 查看日志是否开启日志存放路径
本文主要讲解通过使用 Stream.concat() 方法 去合并两个stream,新的stream由原来的两个stream所有元素组成(相同元素会覆盖)
jQuery 判断某个元素是否在可见区域内这个功能是经常在用的, 但自己没有注意过总结, 下面就总结在这里. 希望对自己和有需要的朋友有帮助!我采用一个题目的形式, 帮助自己记忆.题目:  假定...