JavaSE-内存流ByteArrOutputStream的简单说明

如果你想多次使用同一个流中的数据,你可能就需要到我们的内存流ByteArrInputStream/ByteArrOutputStream.

下面对ByteArrOutputStream做简单说明:

此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。简单来说,就是将数据全部缓存到内存中,然后我们就可以使用该流的方法到处去使用流中的数据。

需要注意的是:关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

下面以一个简单的例子说明该类的特性和使用:

package io;
import java.io.*;
import java.util.Arrays;
public class TestInner {
    public static void main(String[] args) throws IOException {
        // 内存流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        // 文件输入流 a.txt中的内容是abcde
        FileInputStream in = new FileInputStream(new File("d:\\a.txt"));
        // 将文件输入流中的第一个字节写入到内存流中
        baos.write(in.read());
        // 我们就可以到处去使用这个内存流。比如这里我们到处可以使用这个内存流中的内容a(97)
        System.out.println(Arrays.toString(baos.toByteArray()));
        System.out.println(Arrays.toString(baos.toByteArray()));
        System.out.println(Arrays.toString(baos.toByteArray()));
        // 如果是一般的流,使用一次之后就不能在使用了。
        FileOutputStream fos = new FileOutputStream(new File("d:\\b.txt"));
        //  往b.txt中写入一个a
        fos.write(in.read());
        // 这个时候如果我想往c.txt中写一个a,只能再新建一个FileOutputStream出来。
    }
}

上例中我们可以看到,对于baos流中的数据,可以到处去使用,而对于一般的流,则没有这个功能。

你可能感兴趣的:(内存流,多次使用同一流中的数据)