Как преобразовать массив байтов в ByteArrayOutputStream

Мне нужно преобразовать массив байтов в ByteArrayOutputStream, чтобы я мог отобразить его на экране.


person Arun    schedule 02.09.2013    source источник
comment
ByteArrayOutputStream предназначен для получения данных. Вы уверены, что не имеете в виду ByteArrayInputStream?   -  person Jon Skeet    schedule 02.09.2013
comment
С JDK/11 теперь вы можете использовать утилиту, предоставленную для непосредственной записи полного массива байтов.   -  person Naman    schedule 10.08.2018


Ответы (3)


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

Описание метода:

Записывает len байтов из указанного массива байтов, начиная со смещения, в выходной поток этого массива байтов.

person Josh M    schedule 02.09.2013

Вы не можете отобразить ByteArrayOutputStream. Я подозреваю, что вы пытаетесь сделать это

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

Вы можете заставить ByteArrayOutputStream делать что-то подобное, но это не является очевидным, эффективным или передовым методом (поскольку вы не можете контролировать используемую кодировку)

person Peter Lawrey    schedule 02.09.2013

С помощью JDK/11 вы можете использовать writeBytes(byte b[]) API, который в конечном итоге вызывает write(b, 0, b.length), как предложено в ответ Джоша.

/**
 * 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);
person Naman    schedule 10.08.2018
comment
В чем разница между writeBytes(byte[]) и write(byte[])? - person osvein; 23.05.2019
comment
Он наследуется от OutputStream - person osvein; 23.05.2019