内存流:ByteArrayInputStream 和 ByteArrayOutputSteam

来源:互联网 发布:juniper交换机查mac 编辑:程序博客网 时间:2024/06/02 02:25

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();        }    }}
阅读全文
0 0