ByteArrayInputStream中包含一个内部缓冲区,用来包含那些可能从流中读的字节数组。还有一个内部计数器来跟踪下一个将被读取的字节。
ByteArrayInputStream传入一个字节数组进行构造。
流的来源或目的地并不一定是文件,也可以是内存中的一块空间。ByteArrayInputStream、ByteArrayOutputStream就是将字节数组当作流输入来源、输出目的地的类
有时需要对InputStream对象使用多次。比如:既想把数据显示到前台。又想写进文件缓存到本次,而InputStream不可复制,就可以将InputStream转换成ByteArrayOutputStream。后要想使用InputStream,把ByteArrayOutputStream转换回来就可以。
//创建一个InputStream流
InputStream input = httpconn.getInputStream();
//读InputStream流中的数据并写到数组内存中
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len;
while ((len = input.read(b)) > -1 ) {
baos.write(buffer, 0, len);
}
//流中的数据使用方式一:
InputStream stream1 = new ByteArrayInputStream(baos.toByteArray());
//流中的数据使用方式二:
InputStream stream2 = new ByteArrayInputStream(baos.toByteArray());
public class ByteArrayInpuStreamJava {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String strFile = "d:" + File.separator + "javatest" + File.separator + "IO_RandomAccessFileTest.txt";
File f = new File(strFile);
FileInputStream fis = new FileInputStream(f);
byte[] fisByte = new byte[1024];
while ((fis.read(fisByte)) != -1) {
//将读进来的数据写到内存
ByteArrayInputStream bais = new ByteArrayInputStream(fisByte);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//读内存中的数据
baos.write(fisByte, 0, fisByte.length);
byte[] b = baos.toByteArray();
System.out.println(new String(b));
}
fis.close();
}
}