在 Java 中将 InputStream 转换为字节数组

新手上路,请多包涵

如何将整个 InputStream 读入字节数组?

原文由 JGC 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 817
2 个回答

您可以使用 Apache Commons IO 来处理这个和类似的任务。

IOUtils 类型有一个静态方法来读取一个 InputStream 并返回一个 byte[]

 InputStream is;
byte[] bytes = IOUtils.toByteArray(is);

这在内部创建了一个 ByteArrayOutputStream 并将字节复制到输出,然后调用 toByteArray() 。它通过复制 4KiB 块中的字节来处理大文件。

原文由 Rich Seller 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要从 InputStream 读取每个字节并将其写入 ByteArrayOutputStream

然后,您可以通过调用 toByteArray() 检索底层字节数组:

 InputStream is = ...
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

int nRead;
byte[] data = new byte[16384];

while ((nRead = is.read(data, 0, data.length)) != -1) {
  buffer.write(data, 0, nRead);
}

return buffer.toByteArray();

原文由 Adamski 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题