JDK文档上这样描述ByteArrayOutputStream:
此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()
和toString()
获取数据。
它继承于OutputStream。
DataOutputStream允许将Java中基本的数据类型写入到输出流中,它是一个过滤输出流(FilterOutputStream),构造方法需要一个OutputStream。
通过下面代码,我们可以看到将上述二者结合可以很容易构造字节数组。
1 ByteArrayOutputStream bos = new ByteArrayOutputStream();
2 DataOutputStream dos = new DataOutputStream(bos);
3
4 try {
5 dos.write(3);
6 dos.writeBytes("abc");
7 } catch (IOException e) {
8 e.printStackTrace();
9 }
10
11 byte[] bArray = bos.toByteArray();
12
13 for (int i = 0; i < bArray.length; ++i){
14 System.out.println(bArray[i]);
15 }
// output:
3
97
98
99