web-dev-qa-db-ja.com

Javaでは、InputStreamをバイト配列(byte [])に変換するにはどうすればよいですか?

私の経歴は.netで、Javaはかなり初めてです。私の会社のJava=チームのためにいくつかの作業を行っています。アーキテクトは、InputStream(Java.io)オブジェクトを取得するメソッドを実装する必要があります。メソッドの目的を達成するために、これをバイト配列に変換します。これを行う簡単な方法はありますか?

18
Lee Warner

最も簡単な方法は、新しい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();
}
55
Jon Skeet

単純な方法はorg.Apache.commons.io.IOUtils.toByteArray( inputStream )を使用することです。 Apache commons io を参照してください。

9
tangens