В Java базовые реализации потоков ввода-вывода представлены иерархиями классов:
Байтовые потоки (Byte Streams): Работают с данными побайтово (8 бит). Базовые классы: InputStream и OutputStream.
FileInputStream, FileOutputStream - для работы с файлами.ByteArrayInputStream, ByteArrayOutputStream - для работы с массивами байт в памяти.PipedInputStream, PipedOutputStream - для создания каналов связи между потоками.SequenceInputStream - объединяет последовательно несколько InputStream.FilterInputStream, FilterOutputStream - базовые классы для декораторов, добавляющих функциональность (например, буферизация, чтение примитивных типов).Символьные потоки (Character Streams): Работают с символами (кодировка Unicode), используя байтовые потоки или напрямую. Базовые классы: Reader и Writer.
FileReader, FileWriter - для работы с файлами, автоматически обрабатывают кодировку.CharArrayReader, CharArrayWriter - для работы с массивами символов в памяти.StringReader, StringWriter - для работы со строками.PipedReader, PipedWriter - символьные аналоги PipedInputStream и PipedOutputStream.InputStreamReader, OutputStreamWriter - мосты между байтовыми и символьными потоками, позволяют указать кодировку.FilterReader, FilterWriter - базовые классы для декораторов.Буферизованные потоки (Buffered Streams): Обертки над другими потоками для улучшения производительности за счет буферизации.
BufferedInputStream, BufferedOutputStreamBufferedReader, BufferedWriterПотоки данных (Data Streams): Обертки для чтения/записи примитивных типов данных (int, double и т.д.) и строк в машинно-независимом формате.
DataInputStream, DataOutputStreamПотоки объектов (Object Streams): Для сериализации/десериализации объектов.
ObjectInputStream, ObjectOutputStreamПример использования FileInputStream:
java