W tym samouczku dowiemy się o języku Java FileInputStream i jego metodach za pomocą przykładów.
FileInputStream
Klasa java.io
pakietu mogą być wykorzystywane do odczytu danych (w bajtach) z plików.
Rozszerza InputStream
klasę 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.FileInputStream
pakiet. 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
FileInputStream
Klasa zawiera implementacje dla różnych sposobów przedstawienia w InputStream
klasie.
read () Metoda
read()
- czyta pojedynczy bajt z plikuread(byte() array)
- odczytuje bajty z pliku i zapisuje w określonej tablicyread(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
- Najpierw używamy tej
available()
metody, aby sprawdzić liczbę dostępnych bajtów w strumieniu wejściowym pliku. - Następnie użyliśmy tej
read()
metody 3 razy, aby odczytać 3 bajty ze strumienia wejściowego pliku. - 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 FileChannel skojarzony 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).