在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]
Posted
技术标签:
【中文标题】在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]【英文标题】:In Java, how can I convert an InputStream into a byte array (byte[])? [duplicate] 【发布时间】:2011-01-10 22:36:32 【问题描述】:我的背景是 .net,我对 Java 还很陌生。我正在为我们公司的 java 团队做一些工作,架构师需要我实现一个采用 InputStream (java.io) 对象的方法。为了实现该方法的目的,我需要将其转换为字节数组。有没有简单的方法可以做到这一点?
【问题讨论】:
请注意,这可能会占用内存。 【参考方案1】:最简单的方法是创建一个新的ByteArrayOutputStream
,将字节复制到其中,然后调用toByteArray
:
public static byte[] readFully(InputStream input) throws IOException
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1)
output.write(buffer, 0, bytesRead);
return output.toByteArray();
【讨论】:
确保在返回之前刷新输出流。 @quikchange:当你使用 ByteArrayOutputStream 时没有必要——它会缓冲到哪里?【参考方案2】:一个简单的方法是使用org.apache.commons.io.IOUtils.toByteArray( inputStream )
,参见apache commons io。
【讨论】:
以上是关于在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
java中,如何将InputStream类型的东东转成FileInputStream类型?
如何将多个不同的InputStream链接到一个InputStream中
如何在 Java 中将 String[] 数组转换为 InputStream
如何在 Java 中将字符串读入 inputStream? [复制]
在 Java 中,如何使用 Google 的 guava CharStreams.toString 进程中的 inputStream?