web-dev-qa-db-ja.com

バイト配列をByteArrayOutputStreamに変換する方法

画面に表示できるように、バイト配列をByteArrayOutputStreamに変換する必要があります。

22
Arun
byte[] bytes = ....;
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.write(bytes, 0, bytes.length);

メソッドの説明:

オフセットoffから始まる指定されたバイト配列からlenバイトをこのバイト配列出力ストリームに書き込みます。

43
Josh M

ByteArrayOutputStreamを表示することはできません。あなたがやろうとしているのは

byte[] bytes = ...
String text = new String(bytes, "UTF-8"); // or some other encoding.
// display text.

ByteArrayOutputStreamに似たようなことをさせることができますが、これは明らかではなく、効率的でも、ベストプラクティスでもありません(使用するエンコードを制御できないため)

0
Peter Lawrey

JDK/11 を使用すると、最終的にwriteBytes(byte b[])を呼び出すwrite(b, 0, b.length) APIを使用できます。 ジョシュによる回答

/**
 * Writes the complete contents of the specified byte array
 * to this {@code ByteArrayOutputStream}.
 *
 * @apiNote
 * This method is equivalent to {@link #write(byte[],int,int)
 * write(b, 0, b.length)}.
 *
 * @param   b     the data.
 * @throws  NullPointerException if {@code b} is {@code null}.
 * @since   11
 */
public void writeBytes(byte b[]) {
    write(b, 0, b.length);
}

サンプルコードは単純に次のように変換されます-

byte[] bytes = new byte[100];
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.writeBytes(bytes);
0
Naman