如何将整个 InputStream
读入字节数组?
原文由 JGC 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将整个 InputStream
读入字节数组?
原文由 JGC 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
您可以使用 Apache Commons IO 来处理这个和类似的任务。
IOUtils
类型有一个静态方法来读取一个InputStream
并返回一个byte[]
。这在内部创建了一个
ByteArrayOutputStream
并将字节复制到输出,然后调用toByteArray()
。它通过复制 4KiB 块中的字节来处理大文件。