ByteArrayOutputStream类是在创建它的实例时,
程序内部创建一个byte型别数组的缓冲区,然后利用
ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。具体用法如下:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组
ByteArrayInputStream:
可以将字节数组转化为输入流
public static
void main(String[] args)
{
int a =
0;
int b =
1;
int c =
2;
ByteArrayOutputStream bout = new
ByteArrayOutputStream();
bout.write(a);
bout.write(b);
bout.write(c); byte[] buff =
bout.toByteArray(); for (int i =
0; i <
buff.length; i++)
System.out.println(buff[i]);
System.out.println("***********************");
ByteArrayInputStream bin = new
ByteArrayInputStream(buff); while ((b =
bin.read()) != -1) {
System.out.println(b);
}
}
|
如上所示,ByteArrayOutputStream把内存中的数据写到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.
综 合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和
ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以
适当的形式读出了字节数组中的数据.如下所示:
public static
void main(String[] args) throws IOException
{
ByteArrayOutputStream bout =
new ByteArrayOutputStream();
DataOutputStream
dout = new
DataOutputStream(bout);
String
name =
"xxy";
int age
= 84;
dout.writeUTF(name);
dout.writeInt(age);
byte[] buff =
bout.toByteArray();
ByteArrayInputStream
bin = new
ByteArrayInputStream(buff);
DataInputStream
dis = new
DataInputStream(bin);
String
newName = dis.readUTF();
int
newAge = dis.readInt();
System.out.println(newName
+ ":"
+ newAge);
}