Освоение Java FileInputStream: практическое руководство с примерами кода
Класс Java FileInputStream
Класс FileInputStream из пакета java.io позволяет читать сырые байтовые данные из файлов. Он расширяет абстрактный класс InputStream, предоставляя конкретную реализацию для файлового ввода-вывода.
Создание FileInputStream
Импортируйте класс и инстанцируйте его либо путём к файлу, либо объектом File.
1. Использование пути к файлу
FileInputStream input = new FileInputStream("path/to/file.txt");
Открывает поток, связанный с файлом по указанному пути.
2. Использование объекта File
File file = new File("file.txt");
FileInputStream input = new FileInputStream(file);
Ключевые методы FileInputStream
Класс реализует все абстрактные методы InputStream и добавляет свои. Ниже самые используемые.
read()
int read()— читает один байт, возвращает какint(или-1при EOF).int read(byte[] b)— заполняет предоставленный массив байтами.int read(byte[] b, int off, int len)— читает доlenбайт вbначиная со смещенияoff.
Пример: побайтовое чтение текстового файла.
import java.io.FileInputStream;
public class Main {
public static void main(String[] args) {
try (FileInputStream input = new FileInputStream("input.txt")) {
System.out.println("Данные в файле:");
int byteRead;
while ((byteRead = input.read()) != -1) {
System.out.print((char) byteRead);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Вывод
Данные в файле: This is a line of text inside the file.
available()
Возвращает количество байтов, которые можно прочитать без блокировки.
try (FileInputStream input = new FileInputStream("input.txt")) {
System.out.println("Доступно в начале: " + input.available());
input.read();
input.read();
input.read();
System.out.println("Доступно после 3 чтений: " + input.available());
}
Вывод
Доступно в начале: 39 Доступно после 3 чтений: 36
skip()
Продвигает позицию потока на указанное число байт, отбрасывая их.
try (FileInputStream input = new FileInputStream("input.txt")) {
input.skip(5); // пропускаем "This "
int byteRead;
while ((byteRead = input.read()) != -1) {
System.out.print((char) byteRead);
}
}
Вывод
is a line of text inside the file.
close()
Закрывает поток и освобождает ресурсы. Блок try-with-resources (как выше) обеспечивает автоматический вызов close().
Дополнительные методы FileInputStream
| Метод | Описание |
|---|---|
finalize() | Гарантирует вызов close() перед сборкой мусора. |
getChannel() | Возвращает связанный FileChannel. |
getFD() | Предоставляет базовый файловый дескриптор. |
mark(int readlimit) | Помечает текущую позицию для последующего сброса. |
reset() | Возвращает поток к последней отмеченной позиции. |
Для глубокого изучения см. официальную документацию: Java FileInputStream (официальная документация).
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java BufferedReader: эффективная обработка символьных потоков
- Освоение Java Scanner: подробное руководство с практическими примерами
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода