有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    先传输大小,然后传输数据

    否则,不能使用数组,但需要使用可调整大小的数组

    在Java中,不能附加到数组中,因为它们无法增长。您可以设置一个缓冲区,并记住当前使用它的位置。这实际上就是ArrayList所做的:分配一个缓冲区,当超过它的容量时,分配一个更大的缓冲区并复制数据。重复一遍