关于ByteArrayInputStream和ByteArrayOutputStream

package stream.byte_;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * 内存操作流:用于处理临时存储信息的,程序结束,数据就从内存中消失。
 *
 * 字节数组: ByteArrayInputStream ByteArrayOutputStream
 * 
 * 操作字符数组 CharArrayReader CharArrayWriter
 * 
 * 操作字符串 StringReader StringWriter
 * 
 * @author 半步疯子
 *
 */
public class ByteStreamDemo {
	/*
	 * public class ByteArrayOutputStreamextends OutputStream 此类实现了一个输出流,其中的数据被写入一个
	 * byte 数组。 缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。 关闭
	 * ByteArrayOutputStream 无效。 此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
	 * 
	 * 
	 * 底层是byte数组; 但是可指定size 但是我们需要的本来就是这种可以自动增长的流; 所以一般不用修改
	 */
	public static void main(String[] args) throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		// 写数据
		for (int i = 0; i < 10; i++) {
			baos.write("hello\n".getBytes());
		}

		// 释放资源
		// 但是这种释放资源并没有意义,因为其实这种资源并不需要关闭
		// public void close() throws IOException {
		// }
		baos.close();

		// 读数据
		byte[] bys = baos.toByteArray();

		ByteArrayInputStream bais = new ByteArrayInputStream(bys);
		int by = 0;
		while ((by = bais.read()) != -1) {
			System.out.print((char) by);
		}

		// bais.close();
	}
}


posted @ 2018-05-18 21:12  五彩世界  阅读(250)  评论(0编辑  收藏  举报