掌握 Java ByteArrayOutputStream:方法、用法与实战示例
掌握 Java ByteArrayOutputStream
ByteArrayOutputStream 位于 java.io,可将数据写入自动扩容的内部字节数组。继承抽象 OutputStream,是内存字节操作的多功能工具。
注意:内部缓冲区按需扩容,通常无需预设容量,除非明确知道所需大小。
创建 ByteArrayOutputStream
导入 java.io.ByteArrayOutputStream 并实例化。默认缓冲区 32 字节:
// 默认大小
ByteArrayOutputStream out = new ByteArrayOutputStream();
可指定初始容量:
// 自定义大小
ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
size 参数设置初始缓冲区字节长度。
ByteArrayOutputStream 关键方法
write() 方法
write(int b)– 写单字节write(byte[] b)– 写整个字节数组write(byte[] b, int off, int len)– 从索引off写len字节writeTo(ByteArrayOutputStream out1)– 将当前缓冲区复制到另一ByteArrayOutputStream
示例:写数据到 ByteArrayOutputStream
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the string.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] array = data.getBytes();
out.write(array);
String streamData = out.toString();
System.out.println("Output stream: " + streamData);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出
Output stream: This is a line of text inside the string.
write() 将字节数组写入流,toString() 取出文本。
从 ByteArrayOutputStream 访问数据
toByteArray()– 返回内部字节数组副本toString()– 按平台默认字符集转为String
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String data = "This is data.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(data.getBytes());
byte[] byteData = out.toByteArray();
System.out.print("Data using toByteArray(): ");
for (int i = 0; i < byteData.length; i++) {
System.out.print((char) byteData[i]);
}
String stringData = out.toString();
System.out.println("\nData using toString(): " + stringData);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出
Data using toByteArray(): This is data. Data using toString(): This is data.
将每字节转字符显示,演示底层数组到文本的映射。
close() 方法
调用 close() 对 ByteArrayOutputStream 无不良影响;关闭后仍可使用。符合内存缓冲区设计,无外部资源需释放。
其他方法
| 方法 | 描述 |
|---|---|
size() | 返回已写入字节数 |
flush() | 重置内部缓冲区,实际上清空流 |
高级用法请参考官方 Java SE 文档:Java ByteArrayOutputStream。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- Java Stack 类全面指南:用法、核心方法与实战示例
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除