Java FileInputStream (med exempel)

I den här handledningen lär vi oss om Java FileInputStream och dess metoder med hjälp av exempel.

Paketets FileInputStreamklass java.iokan användas för att läsa data (i byte) från filer.

Det utvidgar den InputStreamabstrakta 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.FileInputStreampaketet. 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 FileInputStreamklass erbjuder implementeringar för olika metoder att presentera i InputStreamklassen.

läs () Metod

  • read() - läser en enda byte från filen
  • read(byte() array) - läser bytes från filen och lagras i den angivna matrisen
  • read(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,

  1. Vi använder först available()metoden för att kontrollera antalet tillgängliga byte i filinmatningsströmmen.
  2. Vi har sedan använt read()metoden tre gånger för att läsa 3 byte från filinmatningsströmmen.
  3. 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 FileChannelassocierat 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).

Intressanta artiklar...