ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,
然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。
在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。如下将变量a b c收集到一起
具体用法如下:
ByteArrayOutputStream: 可以捕获内存缓冲区的数据,转换成字节数组 (从数组写)
ByteArrayInputStream: 可以将字节数组转化为输入流 (从数组读)
public static void main(String[] args) {
int a = 98;
int b = 99;
int c = 100;
ByteArrayOutputStream out=new ByteArrayOutputStream();
out.write(a);
out.write(b);
out.write(c);
byte[] buff = out.toByteArray();//在下面再说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("ss"+b);
}
}
输出结果为:
98
99
100
***********************
ss98
ss99
ss100
java.io.ByteArrayOutputStream.toByteArray() 方法创建一个与此输出流大小一样的新缓冲区
声明
以下是java.io.ByteArrayOutputStream.toByteArray()方法的声明:
public byte[] toByteArray()
参数
-
NA
返回值
参考:https://www.yiibai.com/java/io/bytearrayoutputstream_tobytearray.html
public static void main(String[] args) {
int a = 98;
int b = 99;
int c = 100;
ByteArrayOutputStream out=new ByteArrayOutputStream();
out.write(a);
out.write(b);
out.write(c);
byte[] buff = out.toByteArray();//在下面再说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("ss"+b);
}
}
ByteArrayOutputStream: 捕获内存缓冲区的数据,转换成字节数组 (从数组写)
这里的out.toByteArray()是得到一个与out输出流大小一样的新的缓冲区,并包含out的字节数组值, out缓冲区有字节数组值:[98 99 100], 因此
buff[0]=98;buff[1]=99;buff[2]=100;
ByteArrayInputStream 将字节数组buff作为输入流由bin接收,数组有3个字节,read每次读一个字节。输出的结果为:
ss98
ss99
ss100