22.1 内存流(重点掌握)

22.1.1 什么是内存流

当输出流的目的,和输入流的源是内存时,这样的流称之为内存流。(就是将数据写入RAM)

22.1.2 内存流的构造方法

  1. ByteArrayInputStream(byte buf[]); 创建一个 ByteArrayInputStream 并把指定该输入流的数据源buf[]。

  2. ByteArrayOutputStream(); 创建一个 ByteArrayOutputStream 并把分配一个32字节(默认大小)的缓冲区。

  3. ByteArrayOutputStream(int size); 创建一个 ByteArrayOutputStream 并分配自定 size 字节的缓冲区。

22.1.3 读取内存数据和写入到内存数据

22.1.3.1 读取内存数据

try {
    String testContent = "ABCDEFG";//程序运行的时候 这数据本身就在内存,
    ByteArrayInputStream bais = new ByteArrayInputStream(testContent.getBytes());//创建内存输入流,指定要读取的数据 byte[]
    int read;
    while ((read = bais.read()) != -1) {//和普通流读取字节是一样的(也可以嵌套管道)
        System.out.println((char) read);
    }
    bais.close();//关闭流,释放内存资源
}...

22.1.3.2 写入数据到内存

try {
    String testContent = "ABCDEFG";
    ByteArrayOutputStream baos = new ByteArrayOutputStream();//创建内存输出流,把数据写入到内存中
    baos.write(testContent.getBytes());//和普通的输出流写输入一样,(也可以嵌套管道)
    baos.flush();
    baos.close();
}...

22.1.4 ByteArrayOutputStream 常用方法:toByteArray(), toString()

  1. toByteArray() 方法;是将 ByteArrayOutputStream 对象所写入到内存的数据 转换成 byte[] 返回。

  2. toString() 方法 ;是将 ByteArrayOutputStream 对象所写入到内存的数据 转换成 String 返回。

提示:内存流 除了 ByteArrayInputStream 与 ByteArrayOutputStream 主要处理字节数据之外,对应的还有:

  • CharArrayReader 与 CharArrayWriter 主要处理字符数组。

  • StringReader 与 StringWriter 主要处理字符串。(其内部就是使用的StringBuffer)

使用方式大同小异。

笔记:
1.为更好的理解和使用,可以把内存输出流当作 XXXBuffer / XXXBuilder 来理解,都是用来在内存中缓冲一个XXX数组:
ByteArrayOutputStream ---> ByteBuffer(实际不存在)
CharArrayWriter       ---> CharBuffer(实际不存在)
StringWriter          ---> StringBuffer
...

2.而内存输入流,则是在内存中读取 XXX数组。

results matching ""

    No results matching ""