19

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

4

2 回答 2

58

最简单的方法是创建一个新的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();
}
于 2010-01-29T17:12:47.750 回答
9

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

于 2010-01-29T17:13:47.430 回答