Java FileInputStream (з прикладами)

У цьому посібнику ми дізнаємося про Java FileInputStream та його методи за допомогою прикладів.

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

Це розширює InputStreamабстрактний клас.

Перш ніж ми дізнаємось про FileInputStream, обов’язково знайте про файли Java.

Створіть 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) - зчитує з файлу кількість байтів, рівну довжині, і зберігає у вказаному масиві, починаючи з початку позиції

Припустимо, у нас є файл із назвою 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("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(); ) ) ) 

Вихідні дані

 Дані у файлі: це рядок тексту всередині файлу. 

У наведеному вище прикладі ми створили потік введення файлу з назвою input. Вхідний потік пов'язаний з файлом input.txt .

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

Для зчитування даних із файлу ми використовували read()метод всередині циклу while.

доступний () метод

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

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Returns the number of available bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 3 bytes from the file input.read(); input.read(); input.read(); // Returns the number of available bytes System.out.println("Available bytes at the end: " + 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 ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Skips the 5 bytes input.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // 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(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Вихідні дані

 Вхідний потік після пропуску 5 байт: це рядок тексту всередині файлу. 

У наведеному вище прикладі ми використовували skip()метод, щоб пропустити 5 байт даних із потоку введення файлу. Отже, байти, що представляють текст "Це" , не зчитуються з вхідного потоку.

метод close ()

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

У всіх наведених вище прикладах ми використовували close()метод, щоб закрити потік введення файлу.

Інші методи FileInputStream

Методи Описи
finalize() гарантує, що close()метод викликається
getChannel() повертає об'єкт, FileChannelпов'язаний з вхідним потоком
getFD() повертає дескриптор файлу, пов'язаний із вхідним потоком
mark() позначте позицію у вхідному потоці, до якої були прочитані дані
reset() повертає елемент керування до точки у вхідному потоці, де була встановлена ​​позначка

Щоб дізнатись більше, відвідайте Java FileInputStream (офіційна документація Java).

Цікаві статті...