关于类型转换:在Java中,如何将InputStream转换为字节数组(byte [])?

In Java, how can I convert an InputStream into a byte array (byte[])?

本问题已经有最佳答案,请猛点这里访问。

我的背景是.NET,我对Java相当陌生。我正在为我们公司的Java团队做一些工作,架构师需要我来实现一个方法,该方法使用一个输入流(java. IO)对象。为了实现该方法的目的,我需要将其转换为字节数组。有简单的方法吗?


最简单的方法是创建一个新的ByteArrayOutputStream,将字节复制到该字节,然后调用toByteArray

1
2
3
4
5
6
7
8
9
10
11
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();
}


一个简单的方法是使用org.apache.commons.io.IOUtils.toByteArray( inputStream ),参见apache commons io。