Класс Java InputStream: основные методы и практический пример
Класс Java InputStream
В пакете java.io класс InputStream — это абстрактный суперкласс, представляющий байтовый входной поток. Его нельзя инстанцировать напрямую, но конкретные подклассы предоставляют мощные механизмы чтения данных из файлов, байтовых массивов и других источников.
Основные подклассы InputStream
Практическое использование InputStream опирается на его подклассы. Наиболее распространённые:
FileInputStream— чтение байтов из файла на диске.ByteArrayInputStream— чтение байтов из массива в памяти.ObjectInputStream— десериализация объектов из входного потока.
Мы рассмотрим каждый подкласс в отдельных руководствах, а сейчас сосредоточимся на FileInputStream.
Создание InputStream
Для создания InputStream импортируйте класс и инстанцируйте один из подклассов:
import java.io.InputStream;
InputStream stream = new FileInputStream("example.txt");
Можно подставить любой другой конкретный подкласс вместо FileInputStream.
Основные методы InputStream
Следующие методы общие для всех реализаций InputStream:
int read()— читает один байт, возвращает какintили-1при достижении конца потока.int read(byte[] b)— заполняет предоставленный байтовый массив данными, возвращает количество прочитанных байтов.int available()— сообщает количество байтов, которые можно прочитать без блокировки.void mark(int readlimit)— помечает текущую позицию в потоке для последующего возврата.void reset()— возвращает поток к последней отмеченной позиции.boolean markSupported()— указывает, поддерживаются лиmarkиreset.long skip(long n)— пропускает и отбрасываетnбайтов ввода.void close()— закрывает поток и освобождает системные ресурсы.
Практический пример: чтение файла с FileInputStream
Предположим, у нас есть текстовый файл input.txt со содержимым:
This is a line of text inside the file.
Ниже полная Java-программа, открывающая файл, сообщающая количество доступных байтов, читающая содержимое в байтовый массив и выводящая результат.
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] buffer = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("Доступно байтов: " + input.available());
int bytesRead = input.read(buffer);
System.out.println("Прочитано байтов: " + bytesRead);
String data = new String(buffer, 0, bytesRead);
System.out.println("Данные, прочитанные из файла:");
System.out.println(data);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Вывод
Доступно байтов: 39
Прочитано байтов: 39
Данные, прочитанные из файла:
This is a line of text inside the file.
Пример демонстрирует работу с FileInputStream в блоке try-with-resources, гарантирующем автоматическое закрытие потока даже при исключении.
Для глубокого изучения API см. официальную документацию: InputStream Javadoc.
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Scanner: подробное руководство с практическими примерами
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление