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


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

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

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

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

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

或者从每个字节读取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);
}

buffer.flush();

return buffer.toByteArray();