导读
上篇文章介绍了两种常用的文件输入输出流:
https://blog.csdn.net/qiaojialin/article/details/81031422
其中向文件中写入的数据都是预先定义好的字节数组 byte[] ,本文介绍另一种在内存中维护字节数组更常用的方式:内存数组输入输出流。
ByteArrayOutputStream
内存数组流,就是和内存中的数组相关的一个流,可以将字节数组写到输出流中,也可以将字节数组从输入流中读出来,不涉及磁盘。内存数组输出流可以看成一个可自动扩容的 byte 数组,可以往里写字节。
默认初始化 32 个字节的大小。最大容量是 2^31-9 个字节(2G)。只要数据不超过2G,都可以往里写。每次写数据之前,会先计算需要的容量大小,如果需要扩容,扩大到 max{原来的两倍,需要的容量大小}
此外,还可以将 ByteArrayOutputStream 中的字节数组拿出来,拿出来的只是真实存在的数据量。
//为了验证扩容方式,把其内部缓冲区拿出来
class MyByteArrayOutputStream extends ByteArrayOutputStream {
public byte[] getBuf() {
return super.buf;
}
}
private static void outputStreamTest() throws IOException {
// 默认缓冲区大小 32 字节
MyByteArrayOutputStream out =