如何从Java中的DataInputStream读取可变大小的byte []?

时间:2017-02-10 20:10:05

标签: java tcp byte datainputstream dataoutputstream

我正在研究TCP服务器项目,我需要使用DataOutputStream和DataInputStream通过byte []传输文件,而且我已经卡住了。我能够毫无问题地将字节数组写入输出流,但我正在查看DataInputStream的文档以及我希望读取的方法(byte [] b)。问题是这需要我事先创建一个byte [],但我不一定知道它需要的大小,所以我需要一些帮助来解决这个问题。

3 个答案:

答案 0 :(得分:1)

看看Apache Commons IO library。它有一个名为 IOUtils 的实用程序类,它可以将整个输入流读入字节数组,而无需事先声明byte []。 有关更多信息,请查看this

答案 1 :(得分:0)

你不是。您只需要标准的Java拷贝循环:

byte[] buffer = new byte[8192]; // or wherever you like > 0
int count;
while ((count = in.read(buffer)) > 0)
{
    out.write(buffer, 0, count);
}

答案 2 :(得分:-1)

我为TCP服务器和客户端创建了一个库。你也可以使用它。 GitHub

虽然不多,但很简单。