在本教程中,我们将借助示例学习Java ByteArrayOutputStream及其方法。
java.io包的ByteArrayOutputStream类可用于写入输出数据数组(以字节为单位)。
它继承了OutputStream抽象类。
注意:在ByteArrayOutputStream中维护一个存储数据的内部字节数组。
创建一个ByteArrayOutputStream
为了创建字节数组输出流,我们必须首先导入java.io.ByteArrayOutputStream包。导入包后,就可以创建输出流。
//创建一个默认大小的ByteArrayOutputStream ByteArrayOutputStream out = new ByteArrayOutputStream();
在这里,我们创建了一个输出流,它将数据写入默认大小为32字节的字节数组中。但是,我们可以更改数组的默认大小。
//创建具有指定大小的ByteArrayOutputStream ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
在此,size指定数组的长度。
ByteArrayOutputStream的方法
ByteArrayOutputStream类提供OutputStream类中存在的不同方法的实现。
write()方法
write(int byte) - 将指定的字节写入输出流
write(byte[] array) - 将指定数组中的字节写入输出流
write(byte[] arr, int start, int length)- 从位置start开始将等于length的字节数写入数组的输出流
writeTo(ByteArrayOutputStream out1) -将当前输出流的全部数据写入指定的输出流
示例: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("输出流: " + streamData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
输出结果
输出流: This is a line of text inside the string.
在上面的示例中,我们创建了一个名为的字节数组输出流output。
ByteArrayOutputStream output = new ByteArrayOutputStream();
要将数据写入输出流,我们使用了write()方法。
注意:程序中使用的getBytes()方法将字符串转换为字节数组。
从ByteArrayOutputStream访问数据
toByteArray() - 返回输出流中存在的数组
toString() - 以字符串形式返回输出流的全部数据
例如,
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("使用toByteArray()的数据: "); for(int i=0; i<byteData.length; i++) { System.out.print((char)byteData[i]); } //返回一个字符串 String stringData = out.toString(); System.out.println("\n使用toString()的数据: " + stringData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
输出结果
使用toByteArray()的数据: This is data. 使用toString()的数据: This is data.
在上面的示例中,我们创建了一个字节数组来存储toByteArray()方法返回的数据。
然后使用for循环访问数组中的每个字节。在这里,使用类型转换将每个字节转换为相应的字符。
close()方法
要关闭输出流,我们可以使用close()方法。
但是,close()方法在ByteArrayOutputStream类中无效。即使调用了close()方法,我们也可以使用此类的方法。
ByteArrayOutputStream的其他方法
方法 | 内容描述 |
---|---|
size() | 返回输出流中数组的大小 |
flush() | 清除输出流 |