Загрузка файла как InputStream в Java — FileInputStream и getResourceAsStream
Чтобы прочитать содержимое файла побайтово, мы можем «открыть» этот файл как поток ввода
с помощью класса FileInputStream. Это базовый способ работы с файлами в Java и
основа для многих более высокоуровневых операций.
Чтобы понять этот пример, желательно знать:
Класс
FileКласс
InputStreamКласс
FileInputStream
Пример 1: загрузка текстового файла как InputStream
import java.io.InputStream;
import java.io.FileInputStream;
public class Main {
public static void main(String args[]) {
try {
// file input.txt is loaded as input stream
// input.txt file contains:
// This is a content of the file input.txt
InputStream input = new FileInputStream("input.txt");
System.out.println("Data in the file: ");
// Reads the first byte
int i = input.read();
while(i != -1) {
System.out.print((char)i);
// Reads next byte from the file
i = input.read();
}
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Вывод:
Data in the file:
This is a content of the file input.txt.
В примере выше у нас есть файл input.txt. Содержимое этого файла такое:
This is a content of the file input.txt.
Мы использовали класс FileInputStream, чтобы загрузить файл input.txt как поток
ввода. Затем с помощью метода read() мы читаем все данные из файла по одному байту.
Пример 2: загрузка Java-файла как InputStream
Допустим, у нас есть Java-файл с именем Test.java:
class Test {
public static void main(String[] args) {
System.out.println("This is Java File");
}
}
Мы можем загрузить и этот Java-файл как поток ввода:
import java.io.InputStream;
import java.io.FileInputStream;
public class Main {
public static void main(String args[]) {
try {
// file Test.java is loaded as input stream
InputStream input = new FileInputStream("Time.java");
System.out.println("Data in the file: ");
// Reads the first byte
int i = input.read();
while(i != -1) {
System.out.print((char)i);
// Reads next byte from the file
i = input.read();
}
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Вывод:
Data in the file:
class Test {
public static void main(String[] args) {
System.out.println("This is Java File");
}
}
В этом примере мы снова использовали класс FileInputStream, чтобы загрузить
Java-файл как поток ввода.
Подсказка
Для FileInputStream Java читает файл как поток байтов — неважно, что внутри:
.txt, .java, .png или любой другой формат. Байты остаются байтами.
Предупреждение
Не забывайте закрывать поток вызовом input.close(), иначе файл может остаться
«занятым» операционной системой. Ещё лучше — использовать конструкцию
try-with-resources, которая закроет поток автоматически.