Java无限阵列

时间:2012-03-30 14:44:23

标签: java bytearray inputstream

我的部分代码:

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

我不知道会有多少字节。我可以做无限阵列吗?在这种情况下哪种方式最好?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您不知道阅读时有多少数据可用。例如。如果最后一次写入套接字的时间是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.