Gymterview
junior

Какие подклассы класса Reader вы знаете, для чего они предназначены?

Reader — абстрактный класс, определяющий контракт для посимвольного чтения текстовых данных в кодировке Unicode.

Класс Тип Назначение
FileReader Узловой Чтение текста из файла (использует кодировку по умолчанию; с Java 11 можно указать charset)
CharArrayReader Узловой Чтение из символьного массива в памяти
StringReader Узловой Чтение из строки
PipedReader Узловой Чтение из канала, связанного с PipedWriter
BufferedReader Обёртка Буферизованное чтение с поддержкой метода readLine() и lines() (Stream API)
InputStreamReader Обёртка Мост между байтовым и символьным потоком: преобразует байты в символы с указанной кодировкой
FilterReader Обёртка Базовый класс для символьных потоков-обёрток
LineNumberReader Обёртка Расширение BufferedReader, подсчитывающее номера строк
PushbackReader Обёртка Аналог PushbackInputStream для символьных потоков, позволяет возвращать символы в поток

На практике наиболее часто используется связка BufferedReader + InputStreamReader (или FileReader). BufferedReader.readLine() — один из самых распространённых методов для построчного чтения файлов. Начиная с Java 8, метод BufferedReader.lines() возвращает Stream<String> для ленивой обработки строк.

На собеседовании: перечислите 5-6 ключевых подклассов. Обратите внимание на InputStreamReader как мост между байтовым и символьным миром и на BufferedReader.lines() для Stream API.