java 内存输出流ByteArrayOutputStream

* 1.什么是内存输出流
* 该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据
* 2.使用方式
* 创建对象: new ByteArrayOutputStream()
* 写入数据到 ByteArrayOutputStream: write(int), write(byte[])
* 获取数据: toByteArray()

public class Test001 {
public static void main(String[] args) throws Exception {

FileInputStream fin = new FileInputStream("F:\\text\\note.txt");
ByteArrayOutputStream bout = new ByteArrayOutputStream();

int len;
while((len=fin.read())!=-1){
bout.write(len);
}

byte[] arr = bout.toByteArray();
String comment = new String(arr);
System.out.println(comment);

System.out.println("========================");

System.out.println(bout);
fin.close();
bout.close();
}

}


有个问题值得注意:ByteArrayOutputStream的 close() 方法为空实现


ByteArrayOutputStream不需要关闭,为啥呢?
ByteArrayOutputStream或ByteArrayInputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收,所以不需要关流。也就是说,指向内存的流可以不用关闭,指向存储卡/硬盘的流一定要关闭。


————————————————
版权声明:本文为CSDN博主「91奔跑的蜗牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xldmx/article/details/102724092

原文地址:https://www.cnblogs.com/javalinux/p/15693298.html