Преобразование 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 декодирует байты в символы
согласно кодировке (по умолчанию — системной).