Java FileInputStream (z przykładami)

W tym samouczku dowiemy się o języku Java FileInputStream i jego metodach za pomocą przykładów.

FileInputStreamKlasa java.iopakietu mogą być wykorzystywane do odczytu danych (w bajtach) z plików.

Rozszerza InputStreamklasę abstrakcyjną.

Zanim się o tym dowiemy FileInputStream, upewnij się, że wiesz o plikach Java.

Utwórz FileInputStream

Aby utworzyć strumień wejściowy pliku, musimy najpierw zaimportować java.io.FileInputStreampakiet. Po zaimportowaniu pakietu, oto jak możemy utworzyć strumień wejściowy pliku w Javie.

1. Użycie ścieżki do pliku

 FileInputStream input = new FileInputStream(stringPath); 

Tutaj utworzyliśmy strumień wejściowy, który zostanie powiązany z plikiem określonym przez ścieżkę.

2. Korzystanie z obiektu pliku

 FileInputStream input = new FileInputStream(File fileObject); 

Tutaj utworzyliśmy strumień wejściowy, który zostanie powiązany z plikiem określonym przez fileObject.

Metody FileInputStream

FileInputStreamKlasa zawiera implementacje dla różnych sposobów przedstawienia w InputStreamklasie.

read () Metoda

  • read() - czyta pojedynczy bajt z pliku
  • read(byte() array) - odczytuje bajty z pliku i zapisuje w określonej tablicy
  • read(byte() array, int start, int length) - odczytuje liczbę bajtów równą długości z pliku i zapisuje w określonej tablicy zaczynając od pozycji początkowej

Załóżmy, że mamy plik o nazwie input.txt z następującą zawartością.

 This is a line of text inside the file. 

Spróbujmy odczytać ten plik za pomocą 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(); ) ) ) 

Wynik

 Dane w pliku: jest to wiersz tekstu w pliku. 

W powyższym przykładzie utworzyliśmy strumień wejściowy pliku o nazwie input. Strumień wejściowy jest powiązany z plikiem input.txt .

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

Aby odczytać dane z pliku, użyliśmy read()metody wewnątrz pętli while.

dostępne () Metoda

Aby uzyskać liczbę dostępnych bajtów, możemy użyć available()metody. Na przykład,

 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(); ) ) ) 

Wynik

 Liczba dostępnych bajtów na początku: 39 Liczba dostępnych bajtów na końcu: 36 

W powyższym przykładzie

  1. Najpierw używamy tej available()metody, aby sprawdzić liczbę dostępnych bajtów w strumieniu wejściowym pliku.
  2. Następnie użyliśmy tej read()metody 3 razy, aby odczytać 3 bajty ze strumienia wejściowego pliku.
  3. Teraz po odczytaniu bajtów ponownie sprawdziliśmy dostępne bajty. Tym razem dostępne bajty zmniejszyły się o 3.

skip () Metoda

Aby odrzucić i pominąć określoną liczbę bajtów, możemy użyć skip()metody. Na przykład,

 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(); ) ) ) 

Wynik

 Strumień wejściowy po pominięciu 5 bajtów: to wiersz tekstu w pliku. 

W powyższym przykładzie użyliśmy skip()metody do pominięcia 5 bajtów danych ze strumienia wejściowego pliku. W związku z tym bajty reprezentujące tekst „This” nie są odczytywane ze strumienia wejściowego.

close () Metoda

Aby zamknąć strumień wejściowy pliku, możemy użyć close()metody. Po close()wywołaniu metody nie możemy użyć strumienia wejściowego do odczytu danych.

We wszystkich powyższych przykładach użyliśmy close()metody do zamknięcia strumienia wejściowego pliku.

Inne metody FileInputStream

Metody Opisy
finalize() zapewnia close()wywołanie metody
getChannel() zwraca obiekt FileChannelskojarzony ze strumieniem wejściowym
getFD() zwraca deskryptor pliku powiązany ze strumieniem wejściowym
mark() zaznacz pozycję w strumieniu wejściowym, do której zostały odczytane dane
reset() zwraca formant do punktu w strumieniu wejściowym, w którym ustawiono znacznik

Aby dowiedzieć się więcej, odwiedź witrynę Java FileInputStream (oficjalna dokumentacja Java).

Interesujące artykuły...