English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java потокового управления

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map (ассоциативный массив)

Java Set (множество)

Java Ввод/Вывод (I/O)

Java Reader/Writer

Другие темы Java

Класс Java FileInputStream

В этом руководстве мы изучим Java FileInputStream и его методы с помощью примеров.

Класс FileInputStream из пакета java.io может использоваться для чтения данных из файла (в байтах).

он наследуется от абстрактного класса InputStream.

Перед изучением FileInputStream, убедитесь, что вы уже знаетеJava File (файл).

Создание FileInputStream

Для создания потока ввода файла我们必须 сначала импортировать пакет java.io.FileInputStream. После импорта пакета, можно использовать Java для создания потока ввода файла.

1. Использование пути к файлу

FileInputStream input = new FileInputStream(stringPath);

Здесь мы создаем поток ввода, который будет связан с указанным путём к файлу.

2. Использование объекта файла

FileInputStream input = new FileInputStream(File fileObject);

Здесь мы создаем поток ввода, который будет связан с файлом, указанным объектом fileObject.

Методы FileInputStream

Класс FileInputStream предоставляет реализацию различных методов класса InputStream.

Метод read()

  • read() - Читает один байт из файла

  • read(byte[] array) - Читает байты из файла и хранит их в указанном массиве

  • read(byte[] array, int start, int length) - Читает из файла равно length байт и хранит их в указанном массиве с начала по position

Предположим, что у нас есть файл с именемinput.txtфайл, содержащий следующее.

This is a line of text inside the file.

Позвольте нам попробовать использовать FileInputStream для чтения этого файла.

import java.io.FileInputStream;
public class Main {
  public static void main(String args[]) {
     try {
        FileInputStream input = new FileInputStream("input.txt");
        System.out.println("Файл содержащий данные: ");
        // чтение первого байта
        int i = input.read();
       while(i != -1) {
           System.out.print((char)i);
           // чтение следующего байта из файла
           i = input.read();
        }
        input.close();
     }
     catch(Exception e) {}}
        e.getStackTrace();
     }
  }
}

Результат вывода

данными файла:
This is a line of text inside the file.

В этом примере мы создали поток ввода файла с именем input. Входной поток связан сinput.txtссылка на файл.

FileInputStream input = new FileInputStream("input.txt");

Чтобы считывать данные из файла, мы используем метод read() в цикле while.

метод available()

Чтобы получить количество доступных байт, можно использовать метод available(). Например,

import java.io.FileInputStream;
public class Main {
   public static void main(String args[]) {
      try {
        // Предположим, что файл input.txt содержит следующий текст
        // Это строка текста в файле.
         FileInputStream input = new FileInputStream("input.txt");
         // возвращает количество доступных байт
         System.out.println("Количество доступных байт в начале: " + input.available());
         // чтение 3 байт из файла
         input.read();
         input.read();
         input.read();
         // возвращает количество доступных байт
         System.out.println("Количество доступных байт в конце: " + input.available());
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Результат вывода

Количество доступных байт в начале: 39
Количество доступных байт в конце: 36

В этом примере:

  1. Сначала мы использовали метод available() для проверки количества доступных байт в потоке ввода файла.

  2. Затем мы использовали метод read() 3 раза для чтения 3 байт из потока ввода файла.

  3. Теперь, после чтения байта,我们又检查了可用的字�ты. В этот раз, количество доступных байт уменьшилось на 3.

метод skip()

Чтобы сбросить и пропустить指定的 количество байт, можно использовать метод skip(). Например

import java.io.FileInputStream;
public class Main {
   public static void main(String args[]) {
      try {
        // Предположим, что файл input.txt содержит следующий текст
        // Это строка текста в файле.
         FileInputStream input = new FileInputStream("input.txt");
         // пропуск 5 байт
         input.skip(5);
         System.out.println("Пропуск 5 байт в входном потоке:");
         // чтение первого байта
         int i = input.read();
         while (i != -1) {
            System.out.print((char) i);
            // чтение следующего байта из файла
            i = input.read();
         }
         // метод close()
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Результат вывода

Пропустить 5 байт вводного потока:
является строкой текста внутри файла.

В примерах, приведенных выше, мы использовали метод skip() для пропуска 5 байт данных из потока ввода файла. Таким образом, не будет считываться текст“This”байт.

Метод close()

Чтобы закрыть поток ввода файла, можно использовать метод close(). После вызова метода close() мы не можем использовать поток ввода для чтения данных.

В всех примерах, приведенных выше, мы использовали метод close() для закрытия потока ввода файла.

Другие методы FileInputStream

МетодОписание содержимого
finalize()Убедиться, что метод close() вызван
getChannel()Вернуть объект FileChannel, связанный с потоком ввода
getFD()Вернуть файловый дескриптор, связанный с потоком ввода
mark()Пометить положение уже считанных данных в потоке ввода
reset()Вернуть контроль над элементами в точку, установленную в потоке ввода с пометкой