使用场景:
注意事项:
- 把数据临时存在内存的字节数组中(比如网络传输前攒数据)
- 代替文件操作,直接在内存中处理数据(快如闪电⚡)
-
ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 自动创建内部字节数组 ByteArrayInputStream bis = new ByteArrayInputStream(byte[] data); // 用已有字节数组创建
常用方法:
bos.write(int b)
→ 往内存写入1个字节bos.write(byte[] data)
→ 写入整个字节数组- 不需要关闭流(因为是操作内存,不是文件)!
- 适合小数据量,大数据可能撑爆内存💥
bos.toByteArray()
→ 获取内存中的字节数组(核心方法!)bis.read()
→ 从内存字节数组中读取1个字节// 把字符串存到内存,再读取出来 ByteArrayOutputStream bos = new ByteArrayOutputStream(); bos.write("你好".getBytes(StandardCharsets.UTF_8)); // 写入内存 byte[] data = bos.toByteArray(); // 拿到字节数组 ByteArrayInputStream bis = new ByteArrayInputStream(data); int b; while ((b = bis.read()) != -1) { // 逐个字节读取 System.out.print((char) b); // 输出:你好 }