Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

        Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

                                     作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.内存操作流特点

  内存操作流是为了临时处理数据而设置的。内存操作流分为“ByteArrayOutputStream和“ByteArrayInputStream”。

  “ByteArrayOutputStream类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。 

   “ByteArrayInputStream”包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。 

二.内存操作流使用案例

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 package cn.org.yinzhengjie.note6;
 8 
 9 import java.io.ByteArrayInputStream;
10 import java.io.ByteArrayOutputStream;
11 
12 public class ByteArrayOutputStreamDemo {
13     public static void main(String[] args) {
14         ByteArrayOutputStream bos = new ByteArrayOutputStream();
15         
16         byte[] buf = "yinzhengjie@2018".getBytes();
17         int len = buf.length;
18         //将指定的字节写入此 byte 数组输出流。
19         bos.write(100);
20         //将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte 数组输出流。
21         bos.write(buf, 0, len);
22         byte[] cache = new byte[1024];
23         
24         
25         //定义一个读取的流,需要传入一个内部缓冲区,这个缓冲区需要和写入的缓冲区是同一个哟,不然存在读取不到数据的情况。
26         ByteArrayInputStream bis = new ByteArrayInputStream(buf);
27         while( (len = bis.read()) != -1 ) {
28             System.out.print((char)len);
29         }
30     }
31 }
32 
33 
34 /*
35 以上代码执行结果如下:
36 yinzhengjie@2018
37 */
原文地址:https://www.cnblogs.com/yinzhengjie/p/8994595.html