在Java中将输入流转换为字节数组

2022-08-31 04:00:46

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


答案 1

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

该类型具有一个静态方法,用于读取 和 返回 .IOUtilsInputStreambyte[]

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

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


答案 2

您需要从中读取每个字节并将其写入 .InputStreamByteArrayOutputStream

然后,您可以通过调用以下命令来检索基础字节数组: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();

推荐