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 */