【问题标题】:In Java, how can I convert an InputStream into a byte array (byte[])? [duplicate]在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]
【发布时间】:2011-01-10 22:36:32
【问题描述】:

我的背景是 .net,我对 Java 还很陌生。我正在为我们公司的 java 团队做一些工作,架构师需要我实现一个采用 InputStream (java.io) 对象的方法。为了实现该方法的目的,我需要将其转换为字节数组。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 请注意,这可能会占用内存。

标签: java type-conversion inputstream


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2010-11-18
    • 2011-10-05
    • 2012-09-26
    • 1970-01-01
    • 2013-03-03
    • 2021-12-05
    相关资源
    最近更新 更多