Java无限数组

Java无限数组,java,bytearray,inputstream,Java,Bytearray,Inputstream,我的部分代码: byte[] bytes = new byte[8000]; final DataInputStream in = new DataInputStream(s.getInputStream()); final int input = in.read(bytes); 我不知道会有多少字节。我能做无限数组吗?在这种情况下,哪种方式最好 如果您使用的是支持它的Java版本,那么使用它会更好您不知道在阅读时有多少数据可用。例如,如果最后一次写入套接字的时间是16KB,则您可能读取的数据

我的部分代码:

byte[] bytes = new byte[8000];
final DataInputStream in = new DataInputStream(s.getInputStream());
final int input = in.read(bytes);

我不知道会有多少字节。我能做无限数组吗?在这种情况下,哪种方式最好

如果您使用的是支持它的Java版本,那么使用它会更好

您不知道在阅读时有多少数据可用。例如,如果最后一次写入套接字的时间是16KB,则您可能读取的数据小于此值或大于此值

您必须编写假定您不需要知道的代码。这允许您在数据到达时处理数据,而不考虑数据的长度


如果希望发送固定长度的数据块,请先发送大小

byte[] bytes = new byte[1024];
final DataInputStream in = new DataInputStream(s.getInputStream());

int length = in.readInt();
if (length > bytes.length) bytes = new byte[length];
in.readFully(bytes, 0, length); // read length bytes or throw an exception.

然后,你就可以添加到索引中。编辑出C++部分——那是两种完全不同的语言。(每个问题一个问题。)见此问题的答案: