Java IO ByteArrayInputStream和ByteArrayOutputStream

本文详细介绍了Java中ByteArrayInputStream和ByteArrayOutputStream的工作原理及使用方法。ByteArrayInputStream是一种字节数组输入流,通过字节数组实现数据读取。ByteArrayOutputStream则是一种字节数组输出流,用于将数据写入到byte数组中,并可以方便地获取输出内容。

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

ByteArrayInputStream是字节数组输入流。它继承于InputStream。它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的。

ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方法要读取的下一个字节。

关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

例子:

public static void main(String[] args) throws Exception{
        String tempStr="ASDASXXAS";
        ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(tempStr.getBytes());
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        int temp;
        while ((temp=byteArrayInputStream.read())!=-1){
            char c= (char) temp;
            byteArrayOutputStream.write(Character.toLowerCase(c));
        }
        byteArrayInputStream.close();
        byteArrayOutputStream.close();
        System.out.println(byteArrayOutputStream.toString());
    }

ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。
ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

例子:

private static void test2() throws IOException {
        String tempStr = "ASDASXXAS";
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(tempStr.getBytes());
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int temp;
        while ((temp = byteArrayInputStream.read()) != -1) {
            char c = (char) temp;
            byteArrayOutputStream.write(Character.toLowerCase(c));
        }
        byteArrayInputStream.close();
        byteArrayOutputStream.close();
        System.out.println(byteArrayOutputStream.toString());

        // 计算长度
        int size = byteArrayOutputStream.size();
        System.out.printf("size=%s\n", size);

        // 转换成byte[]数组
        byte[] buf = byteArrayOutputStream.toByteArray();
        String str = new String(buf);
        System.out.printf("str=%s\n", str);


        // 转换成byte[]数组
        String str2 = byteArrayOutputStream.toString();
        System.out.printf("byteArrayOutputStream=%s\n", str2);

        // 将byteArrayOutputStream写入到另一个输出流baos中
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byteArrayOutputStream.writeTo(baos);
            System.out.printf("baos=%s\n", baos);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值