Класс FileInputStream
Класс FileInputStream представляет собой поток ввода,
который читает байты из файла. Он наследуется от класса
InputStream и используется для побайтового чтения
бинарных данных: изображений, аудио, видео и любых других
файлов. В конструктор мы передаем либо путь к файлу в виде
строки, либо объект File, либо объект
FileDescriptor. После окончания работы поток
необходимо закрыть методом close.
Класс FileInputStream является наследником
абстрактного класса InputStream, поэтому он
поддерживает все его методы чтения: read,
readAllBytes, readNBytes,
skip, available, transferTo
и close.
Синтаксис
new FileInputStream(String name)
new FileInputStream(File file)
new FileInputStream(FileDescriptor fdObj)
Пример
Давайте создадим файл, запишем в него строку и прочитаем
его побайтово с помощью FileInputStream:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try
{
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("abcde".getBytes());
fos.close();
FileInputStream fis = new FileInputStream("test.txt");
int b;
while ((b = fis.read()) != -1)
{
System.out.println((char) b);
}
fis.close();
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте прочитаем весь файл сразу методом
readAllBytes и выведем полученные байты
в виде строки:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try
{
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("12345".getBytes());
fos.close();
FileInputStream fis = new FileInputStream("test.txt");
byte[] bytes = fis.readAllBytes();
fis.close();
String res = new String(bytes);
System.out.println(res);
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"12345"
Пример
Давайте прочитаем только первые 3 байта файла
с помощью метода readNBytes:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try
{
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("abcde".getBytes());
fos.close();
FileInputStream fis = new FileInputStream("test.txt");
byte[] bytes = fis.readNBytes(3);
fis.close();
String res = new String(bytes);
System.out.println(res);
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"abc"
Смотрите также
-
класс
InputStream,
который является родителем FileInputStream -
метод
read,
который читает один байт из потока -
метод
readAllBytes,
который читает все байты из потока -
класс
FileOutputStream,
который записывает байты в файл