IO流之ByteArrayOutputStream

本文介绍了ByteArrayOutputStream,这是一个可以向内存中写入数据的流。它将内存视作缓冲区,允许一次性获取所有写入的数据。由于其在内存中操作,无需关闭流,当不再使用时,Java的垃圾回收机制会自动回收相关资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该输出流可以向内存中写数据,把内存当做一个缓冲区,写出之后一次性获取所有数据。

FileInputStream fis = new FileInputStream("a.txt");
        ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 在内存中创建了可以增长的字符数组

        int b;
        while((b = fis.read()) != -1)
            baos.write(b);              // 将数据逐个写到内存中

        byte[] arr = baos.toByteArray();    // 将缓冲区中的数据全部获取出来,并赋值给arr
        System.out.println(new String(arr)); // 可以使用指定编码表,即在构造方法中传入码表

        System.out.println(baos.toString()); // 使用默认的编码表转换,输出时toString()方法可以省略

        fis.close();

第9行和第11行的输出效果一样。
注意ByteArrayOutputStream不需要关流。因为ByteArrayOutputStream是内存读写流,不同于指向硬盘的流,它内部是使用字节数组读内存的,这个字节数组是它的成员变量,当这个数组不再使用变成垃圾的时候,Java的垃圾回收机制会将它回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值