这篇博客主要是复习一下Java中的字节数组流。
字节数组流是将数据保存在内存的缓冲区中,而不是与文件打交道,
所以无论文件流是否关闭对其都没有影响
1.ByteArrayInputStream
public class ByteArrayInputStream
extends InputStream
ByteArrayInputStream 包含着一个内部缓冲区,该缓冲区包含着从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节
关闭ByteArrayInputStream无效。此类中的方法在关闭此流之后仍可被调用而不会产生任何的IOException
2.ByteArrayOutputStream
public class ByteArrayOutputStream
extends OutputStream
此类实现了一个输出流,其中的数据被写入一个byte数组。缓冲区会随着数据的不断增长而自动增加。可使用toByteArray()和toString()
获取数据
关闭ByteArrayOutputStream无效。此类中的方法在关闭此流之后仍可被调用而不会产生任何的IOException
public class ByteArrayDemo {
/**
* 使用ByteArrayOutputStream写操作
*/
public static void write()
{
//默认的缓冲区大小为32个字节,具有自动扩充的功能
//创建一个字节输出流数据
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
String info="水不在深,有龙则灵";
try {
//往缓冲区里面写数据
byteArrayOutputStream.write(info.getBytes());
byteArrayOutputStream.write(10);
//将数据转换为一个数组
// byteArrayOutputStream.toByteArray();
}catch (IOException ex)
{
ex.printStackTrace();
}
//根据一个字节数组构造一个字节数组输入流
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
byte []bytes=new byte[512];
int len=-1;
StringBuilder stringBuilder=new StringBuilder();
try {
while((len=byteArrayInputStream.read(bytes))!=-1)
{
stringBuilder.append(new String(bytes,0,len));
}
}catch (IOException ex)
{
ex.printStackTrace();
}
System.out.println(stringBuilder);
}
public static void main(String args[])
{
write();
}
}