I den här handledningen lär vi oss om Java FileInputStream och dess metoder med hjälp av exempel.
Paketets FileInputStream
klass java.io
kan användas för att läsa data (i byte) från filer.
Det utvidgar den InputStream
abstrakta klassen.
Innan vi lär oss om FileInputStream
, se till att veta om Java-filer.
Skapa en FileInputStream
För att skapa en filinmatningsström måste vi först importera java.io.FileInputStream
paketet. När vi väl har importerat paketet, här är hur vi kan skapa en filinmatningsström i Java.
1. Använda sökvägen till fil
FileInputStream input = new FileInputStream(stringPath);
Här har vi skapat en ingångsström som kommer att länkas till filen som anges av sökvägen.
2. Använda ett objekt i filen
FileInputStream input = new FileInputStream(File fileObject);
Här har vi skapat en ingångsström som kommer att länkas till filen som anges av fileObject
.
Metoder för FileInputStream
Den FileInputStream
klass erbjuder implementeringar för olika metoder att presentera i InputStream
klassen.
läs () Metod
read()
- läser en enda byte från filenread(byte() array)
- läser bytes från filen och lagras i den angivna matrisenread(byte() array, int start, int length)
- läser antalet byte som är lika långa från filen och lagras i den angivna matrisen med start från positionens start
Antag att vi har en fil med namnet input.txt med följande innehåll.
This is a line of text inside the file.
Låt oss försöka läsa den här filen med 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(); ) ) )
Produktion
Data i filen: Det här är en textrad i filen.
I exemplet ovan har vi skapat en filinmatningsström med namnet input. Ingångsströmmen är länkad till filen input.txt .
FileInputStream input = new FileInputStream("input.txt");
För att läsa data från filen har vi använt read()
metoden inuti while-slingan.
tillgänglig () Metod
För att få antalet tillgängliga byte kan vi använda available()
metoden. Till exempel,
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(); ) ) )
Produktion
Tillgängliga byte i början: 39 Tillgängliga byte i slutet: 36
I exemplet ovan,
- Vi använder först
available()
metoden för att kontrollera antalet tillgängliga byte i filinmatningsströmmen. - Vi har sedan använt
read()
metoden tre gånger för att läsa 3 byte från filinmatningsströmmen. - Nu, efter att ha läst byten, har vi igen kontrollerat tillgängliga byte. Den här gången minskade de tillgängliga byten med 3.
skip () Metod
För att kasta och hoppa över det angivna antalet byte kan vi använda skip()
metoden. Till exempel,
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(); ) ) )
Produktion
Input Stream efter att ha hoppat över 5 byte: är en textrad i filen.
I exemplet ovan har vi använt skip()
metoden för att hoppa över 5 byte data från filinmatningsströmmen. Därför läses inte byten som representerar texten "This" från ingångsströmmen.
close () Metod
För att stänga filinmatningsströmmen kan vi använda close()
metoden. När close()
metoden har anropats kan vi inte använda ingångsströmmen för att läsa data.
I alla ovanstående exempel har vi använt close()
metoden för att stänga filinmatningsströmmen.
Andra metoder för FileInputStream
Metoder | Beskrivningar |
---|---|
finalize() | säkerställer att close() metoden anropas |
getChannel() | returnerar objektet som är FileChannel associerat med ingångsströmmen |
getFD() | returnerar filbeskrivaren som är associerad med ingångsströmmen |
mark() | markera positionen i ingångsströmmen till vilken data har lästs |
reset() | återgår kontrollen till den punkt i ingångsströmmen där märket sattes |
För att lära dig mer, besök Java FileInputStream (officiell Java-dokumentation).