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.