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

2022-09-02 11:14:14

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


答案 1

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

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();
}

答案 2

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