Преобразование 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 (например,
логгер или сериализатор).