如何在 Java 中从 DataInputStream 读取变量大小的 byte[]



我正在处理一个TCP服务器项目,我需要使用DataOutputStream和DataInputStream通过byte[]传输文件,但我卡住了。我能够毫无问题地将字节数组写入输出流,但我正在查看 DataInputStream 的文档,我似乎想要的方法是读取(byte[] b(。问题是这需要我事先创建一个 byte[],但我不一定知道它需要多大的大小,所以我需要一些关于我应该如何做到这一点的帮助。

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

你没有。您所需要的只是标准的 Java 复制循环:

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

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

它不多,但很简单。

相关内容

  • 没有找到相关文章

最新更新