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
".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();
}
}