1 .内存操作速度快,可以将数据写入内存再进行之后的操作.
ByteArrayInputStream 是InputStream的子类
ByteArrayOutputSteam是OutputSteam的子类
2 . 定义内存输出流对象时,构造方法无参数,
ByteArrayOutputStream baos = new ByteArrayOutputStream();
而内存输入流对象的构造函数需要一个缓冲byte数组
byte[] bs =new byte[20];
// 将内存中的数据读取出来
ByteArrayInputStream bais = new ByteArrayInputStream(bs);
3 . write()和read()方法,是相对于内存文件来说的,而对象流是选择对象输出流或输入流是相对于程序来说的. 也就是说如果想往内存写入数据,相对于程序来说是输出,则要定义输出流(ByteArrayOutputSteam)对象,然后调用write()方法.
4 . 同时,如果想要从内存中读取数据,则相对于程序来说是输入,要定义(ByteArrayInputSteam)对象,然后调用read().
5 .
ByteArrayInputStream(byte[] buf)
创建一个 ByteArrayInputStream ,使其使用 buf作为其缓冲区数组。
package com.qf.demo7;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
/**
* 内存流:
* ByteArrayInputStream
* ByteArrayOutputSteam
*/
public class Test {
public static void main(String[] args) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
// 将内容写入到内存
baos.write("写个啥".getBytes());
baos.flush();
// baos.toByteArray();
byte[] bs =new byte[20];
System.out.println(Arrays.toString(bs));
// 将内存中的数据读取出来
ByteArrayInputStream bais = new ByteArrayInputStream(bs);// byte必须传递 内存中的数据转成 byte数组的格式
// 而不能直接传递一个空数组, 读取出来的数据也是空的
byte[] b = new byte[10];
int num = bais.read(b);
System.err.println(Arrays.toString(b));
System.out.println(num);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}