import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*用于操作字节数组的流对象
* ByteArrayInputStream:在构造的时候需要接收数据源,因而数据源是一个字节数组
* ByteArrayOutputStream:在构造是时候,不用定义数据目的,
* 因为该对象中已经内部封装了可变长度的字节数组,这就是数据目的地
* 因为这两个流对象都操作的数组,并没有使用系统资源,所以不用进行close关闭。
*
*
* 在流操作中:
* 源设备:键盘system.in 硬盘 FileStream, 内存 ArrayStream
* 目的设备:控制台system.out 硬盘 FileStream, 内存 ArrayStream
*
* 用流的读写思想来操作数组
* 相似用法的类有:
* 操作字符数组:CharArrayReader和 CharArrayWriter
操作字符串:StringReader和StringWriter
*/
public class ByteArrayStream {
public static void main(String[] args) {
//源和目的都在内存中
//数据源(把数据源改变一些就可以输入想要的数据源类型)
ByteArrayInputStream bis=new ByteArrayInputStream("ASDFDF".getBytes());
//明确数据目的
ByteArrayOutputStream bos=new ByteArrayOutputStream();
int by=0;
while ((by=bis.read())!=-1) {
bos.write(by);
}
// 将此 byte 数组输出流的全部内容写入到指定的输出流参数中
try {
bos.writeTo(new FileOutputStream("a.txt"));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(bos.size());
System.out.println(bos.toString());
}
}