java从socket读取字节数组
我已经读过《太阳报》和其他类似的问题。我想从socket向数组中读取未知数量的字节
我有两个选择,一个是在循环中使用read(byte)
并将字节添加到字节数组中,另一个是使用DataInputStream readFully(byte[])
将所有字节读取到字节数组中。哪一个更好?如何提前找到字节数组的大小以进行分配?另外,如果我使用第一种方法,如何在字节数组中追加字节
while(in.read(b) ! = -1)
{
//Add to byte array, but how to append at the end?
}
我是否可以使用StringBuilder接收数据、附加到数据,然后执行toString().getBytes()
# 1 楼答案
先传输大小,然后传输数据
否则,不能使用数组,但需要使用可调整大小的数组
在Java中,不能将附加到数组中,因为它们无法增长。您可以设置一个缓冲区,并记住当前使用它的位置。这实际上就是ArrayList所做的:分配一个缓冲区,当超过它的容量时,分配一个更大的缓冲区并复制数据。重复一遍