Преобразование OutputStream в String на Java — ByteArrayOutputStream

И наоборот: у нас есть выходной поток (OutputStream), куда мы что-то записали, и теперь хотим получить итог в виде строки. Самый удобный класс для этого — ByteArrayOutputStream: он накапливает байты в памяти, а потом отдаёт их в виде массива, который легко превратить в String.

Чтобы понять этот пример, желательно знать:

  • Класс OutputStream

  • Строки в Java (String)

Пример: преобразование OutputStream в String

import java.io.*;

public class OutputStreamString {

    public static void main(String[] args) throws IOException {

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        String line = "Hello there!";

        stream.write(line.getBytes());
        String finalString = new String(stream.toByteArray());

        System.out.println(finalString);
    }
}

Вывод:

Hello there!

В этой программе мы создали OutputStream на основе заданной строки line. Это делается с помощью метода write() потока.

Затем мы просто конвертируем OutputStream в finalString, используя конструктор класса String, который принимает массив байтов. Для этого мы вызываем метод toByteArray() потока.

Совет

Связка ByteArrayOutputStream + new String(bytes) — это стандартный способ «собрать» текст из любого источника, который пишет в OutputStream (например, логгер или сериализатор).