Привіт усім! В даній статті розглядається клас FileInputStream, який призначений для читання послідовностей байтів з файлів. Клас FileInputStream призначений для читання потоків “сирих” байтів, на подобі даних файлу зображення. Для читання потоку символів бажано за допомогою FileReader.

Конструктори

FileInputStream(File file)
Створює примірник класу FileInputStream, відкриваючи підключення до вказаного файлу, за допомогою об'єкта File.
FileInputStream(FileDescriptor fdObj)
Створює примірник класу FileInputStream, використовуючи файловий дескриптор fdObj, який представляє існуюче підключення до певного файлу файлової системи.
FileInputStream(String name)
Створює примірник класу FileInputStream, відкриваючи підключення до певного файлу файлової системи, який вказаний у вигляді рядка символів.

Методи

int available()
Повертає кількість доступних байтів, які можна прочитати без блокування виклику.
void close()
Закриває файловий ввідний потік і вивільняє будь-які ресурси асоційовані з потоком.
protected void finalize()
Запевняє, що метод close поточного ввідного файлового потоку буде викликано, коли перестануть існувати буд-які посилання на нього.
FileChannel getChannel()
Повертає унікальний об'єкт FileChannel, який асоційований з цим ввідним файловим потоком.
FileDescriptor getFD()
Повертає об'єкт класу FileDescriptor, який представляє підключення до певного файлу у файловій системі поточного об'єкта.
int read()
Читає байт даних з поточного файлового потоку.
int read(byte[] b)
Читає b.length байтів з файлової системи і записує їх у переданий масив байтів.
int read(byte[] b, int off, int len)
Читає максимально len байтів з поточного потоку у масив байтів.
long skip(long n)
Пропускає вказану кількість байтів з поточного файлового потоку.

Приклад

Наступний код демонструє програму, яка зчитує увесь вміст файлу і показує кількість прочитаних байтів і сам контент у вікно терміналу.
import java.io.* ;
import java.nio.file.* ;
import java.net.URI ; /* об'єкт URI */

class MainClass
{
  public static void main (String[] opts)
  {
    File path = new File ("ascii_file.txt") ;
    
    if (path.exists() && path.canRead())
    {
      try
      {
        FileInputStream stream = new FileInputStream (path) ;
        
        int size = stream.available() ;
        
        System.out.println ("Розмір файлу " + path + 
                            " складає " + size + " байтів") ;
        
        byte[] content = new byte [size] ;
        
        stream.read (content) ;
        
        String str = new String (content) ;
        
        System.out.println ("Контент файлу: " + str) ;
      }
      catch (FileNotFoundException ex)
      {
        System.out.println ("Сталася помилка: " + ex) ;
      }
      catch (IOException ex)
      {
        System.out.println ("Сталася помилка: " + ex) ;
      }
      
    }
    else
    {
      System.out.println ("Не можу відкрити файл!") ;
    }
  }
}
Після компілювання і виконання даного коду можна отримати наступний результат (код згаходиться у файлі "MainClass.java", Юнікс-команда "cat" демонструє вміст файлу на екран): java_file_input_stream_sample_output