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

Lee*_*ner 18 java inputstream type-conversion

我的背景是.net,我对Java很新.我正在为我们公司的java团队做一些工作,架构师需要我实现一个带有InputStream(java.io)对象的方法.为了实现方法的目的,我需要将其转换为字节数组.是否有捷径可寻?

Jon*_*eet 55

最简单的方法是创建一个新的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();
}
Run Code Online (Sandbox Code Playgroud)

  • @quikchange:当你使用ByteArrayOutputStream时没有必要 - 它会缓冲到哪里? (5认同)

tan*_*ens 9

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