Какие существуют базовые реализации потоков ввода-вывода (Input/Output Streams) в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В 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:
import java.io.FileInputStream;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int data;
while ((data = fis.read()) != -1) { // Чтение побайтово
System.out.print((char) data); // Преобразование байта в символ
}
} catch (IOException e) {
e.printStackTrace();
}
}
}