Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Интерфейс Input в Java
Input (или потоки ввода) — это механизм для чтения данных из различных источников (файлы, сеть, консоль, массивы байтов). В Java это реализовано через иерархию классов и интерфейсов, основанных на java.io.InputStream.
Основные функции Input
- Чтение данных — получение информации из различных источников
- Буферизация — оптимизация операций чтения
- Декорирование — добавление функциональности к потокам
- Фильтрация — преобразование данных при чтении
- Работа с разными типами данных — байты, строки, объекты
Основные классы Input
InputStream — базовый класс для всех потоков ввода:
// Чтение одного байта
int byte = inputStream.read(); // возвращает -1 если конец потока
// Чтение массива байтов
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
// Чтение всех байтов
byte[] allBytes = inputStream.readAllBytes();
FileInputStream — чтение файлов
try (FileInputStream fis = new FileInputStream("file.txt")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
// Обработка прочитанных данных
System.out.write(buffer, 0, bytesRead);
}
}
BufferedInputStream — буферизованное чтение
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("data.bin"))) {
int data;
while ((data = bis.read()) != -1) {
System.out.print((char) data);
}
}
InputStreamReader — преобразование байтов в символы
try (InputStreamReader isr = new InputStreamReader(
new FileInputStream("text.txt"), StandardCharsets.UTF_8)) {
int ch;
while ((ch = isr.read()) != -1) {
System.out.print((char) ch);
}
}
BufferedReader — построчное чтение текста
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println("Введено: " + line);
}
}
DataInputStream — чтение примитивных типов
try (DataInputStream dis = new DataInputStream(
new FileInputStream("data.bin"))) {
int number = dis.readInt();
double value = dis.readDouble();
String text = dis.readUTF();
}
ObjectInputStream — десериализация объектов
try (ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("objects.ser"))) {
MyClass obj = (MyClass) ois.readObject();
}
Иерархия классов Input
InputStream
├── FileInputStream
├── ByteArrayInputStream
├── PipedInputStream
├── FilterInputStream
│ ├── BufferedInputStream
│ ├── DataInputStream
│ └── ...
└── ObjectInputStream
Try-with-resources — правильное управление ресурсами
// Ресурс автоматически закроется
try (FileInputStream fis = new FileInputStream("file.txt")) {
byte[] data = fis.readAllBytes();
// работа с data
} // AutoCloseable.close() вызовется автоматически
Ключевые методы InputStream
| Метод | Описание |
|---|---|
read() | Читает один байт (-1 если конец) |
read(byte[] b) | Читает в массив |
readAllBytes() | Читает все данные |
close() | Закрывает поток |
available() | Количество доступных байтов |
Заключение
Input — это критически важный компонент для работы с внешними данными. Знание иерархии классов и правильное использование буферизации необходимо для эффективного программирования на Java. Всегда используй try-with-resources для автоматического управления ресурсами.