本文主要介绍Java中,将InputStream输入流转换读取成byte[]字节数组的几种方法,以及相关的示例代码。

1、使用Apache Common中IOUtils.toByteArray()转换

byte[] bytes = IOUtils.toByteArray(inputStream);

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

相关文档: Commons IO

2、使用ByteArrayOutputStream的toByteArray()转换

ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
return buffer.toByteArray();

3、使用readAllBytes()读取转换

相关文档:

InputStream.html#readAllBytes--

readNBytes-byte:A-int-int-

transferTo(OutputStream)

byte[] array = inputStream.readAllBytes();

4、使用DataInputStream的readFully读取转换

byte[] bytes = new byte[(int) file.length()];
DataInputStream dis = new DataInputStream(inputStream);
dis.readFully(bytes);

5、使用Google Guava中ByteStreams.toByteArray()转换

byte[] bytes = ByteStreams.toByteArray(inputStream);

文档: google guava

相关文档:

Java InputStream流转换读取成String字符串方法及示例代码

Java 使用Stream I/O(InputStream/OutputStream)读写文件的方法及示例代码

推荐文档