Gymterview
junior

Назовите основные классы потоков ввода/вывода

Основные классы потоков ввода/вывода образуют четыре иерархии, каждая с корневым абстрактным классом.

Иерархия Корневой класс Тип данных Направление
Байтовый ввод InputStream byte Чтение
Байтовый вывод OutputStream byte Запись
Символьный ввод Reader char Чтение
Символьный вывод Writer char Запись

Каждый корневой класс определяет базовый контракт: InputStream предоставляет метод read(), OutputStreamwrite(), Readerread(char[]), Writerwrite(char[]). Все четыре класса реализуют Closeable (а значит и AutoCloseable), что позволяет использовать их в конструкции try-with-resources.

Конкретные реализации делятся на узловые (работающие с источником данных: FileInputStream, FileReader) и обрабатывающие (добавляющие функциональность: BufferedInputStream, BufferedReader, DataInputStream). Обрабатывающие потоки принимают в конструктор другой поток, реализуя паттерн Декоратор.

На собеседовании: достаточно назвать четыре корневых класса и пояснить, что байтовые работают с byte, символьные — с char. Бонус — упомянуть паттерн Декоратор и AutoCloseable.