java 内存流(ByteArrayInputStream,ByteArrayOutputStreaem)

来源:互联网 发布:机器人单片机 编辑:程序博客网 时间:2024/06/15 23:12
1 什么是内存流
当输出流的目的,和输入流的源是内存时,这样的流称之为内存流。(就是将数据写入RAM)


2 内存流的构造方法

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

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

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

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

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();//关闭流,释放内存资源    }...

3.2 写入数据到内存
 // ByteArrayOutputStream baos = new ByteArrayOutputStream(int size);//设置内部缓存大小为1。try {ByteArrayOutputStream baos = new ByteArrayOutputStream();//创建内存输出流,把数据写入到内存中String s1 = "hhhhh";String s2 = "aaaaa";byte[] b1 = s1.getBytes();byte[] b2 = s2.getBytes();baos.write(b1);//和普通的输出流写输入一样,(也可以嵌套管道)baos.write(b2);// 将 b2 byte[] 存放到 baos 中缓存// 得到 ByteArrayOutputStream 内部的 byte[]中以缓存的数组byte[] byteArray = baos.toByteArray();String string = baos.toString();System.out.println(string);baos.flush();baos.close();} catch (IOException e) {e.printStackTrace();}

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

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

提示:内存流 除了 ByteArrayInputStream 与 ByteArrayOutputStream 主要处理字节数据之外,对应的还有:
- CharArrayReader 与  CharArrayWriter 主要处理字符数组。
- StringReader 与 StringWriter 主要处理字符串。




阅读全文
0 0
原创粉丝点击