Преобразование InputStream в String на Java — все способы с примерами

Обратная задача: у нас есть поток ввода (например, из файла или сети), а нужно получить из него обычную строку String. Самый простой способ — читать поток построчно через BufferedReader и собирать результат в StringBuilder.

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

  • Класс InputStream

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

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

import java.io.*;

public class InputStreamString {

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

        InputStream stream = new ByteArrayInputStream("Hello there!".getBytes());
        StringBuilder sb = new StringBuilder();
        String line;

        BufferedReader br = new BufferedReader(new InputStreamReader(stream));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        br.close();

        System.out.println(sb);

    }
}

Вывод:

Hello there!

В программе выше поток ввода создаётся из строки и сохраняется в переменной stream. Также нам нужен StringBuilder sb, чтобы собрать итоговую строку из потока.

Затем мы создали буферизованный читатель br на основе InputStreamReader, чтобы читать строки из потока. В цикле while мы читаем каждую строку и добавляем её в StringBuilder. В конце мы закрываем BufferedReader.

Поскольку метод чтения может выбросить IOException, мы добавили throws IOException в сигнатуру метода main:

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

Примечание

InputStreamReader нужен как «переходник»: InputStream работает с байтами, а BufferedReader — с символами. InputStreamReader декодирует байты в символы согласно кодировке (по умолчанию — системной).