Java FileInputStream (s příklady)

V tomto tutoriálu se pomocí příkladů seznámíme s Java FileInputStream a jeho metodami.

FileInputStreamTřída java.ioobalu lze použít ke čtení dat (v bytech) ze souborů.

Rozšiřuje InputStreamabstraktní třídu.

Než se o tom dozvíme FileInputStream, nezapomeňte vědět o souborech Java.

Vytvořte FileInputStream

Abychom mohli vytvořit vstupní proud souboru, musíme java.io.FileInputStreamnejprve importovat balíček. Jakmile balíček naimportujeme, můžeme v Javě vytvořit vstupní proud souborů.

1. Pomocí cesty k souboru

 FileInputStream input = new FileInputStream(stringPath); 

Zde jsme vytvořili vstupní proud, který bude propojen se souborem určeným cestou.

2. Použití objektu souboru

 FileInputStream input = new FileInputStream(File fileObject); 

Zde jsme vytvořili vstupní proud, který bude propojen se souborem určeným fileObject.

Metody FileInputStream

FileInputStreamTřída poskytuje implementace pro různé metody prezentovat ve InputStreamtřídě.

metoda read ()

  • read() - načte ze souboru jeden bajt
  • read(byte() array) - načte bajty ze souboru a uloží je do zadaného pole
  • read(byte() array, int start, int length) - načte počet bajtů rovných délce ze souboru a uloží do zadaného pole počínaje od začátku pozice

Předpokládejme, že máme soubor s názvem input.txt s následujícím obsahem.

 This is a line of text inside the file. 

Zkusme tento soubor přečíst 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(); ) ) ) 

Výstup

 Data v souboru: Toto je řádek textu uvnitř souboru. 

Ve výše uvedeném příkladu jsme vytvořili vstupní proud souboru s názvem vstup. Vstupní proud je propojen se souborem input.txt .

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

K načtení dat ze souboru jsme použili read()metodu uvnitř smyčky while.

dostupná metoda ()

K získání počtu dostupných bajtů můžeme použít available()metodu. Například,

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

Výstup

 Dostupné bajty na začátku: 39 Dostupné bajty na konci: 36 

Ve výše uvedeném příkladu

  1. Nejprve pomocí této available()metody zkontrolujeme počet dostupných bajtů ve vstupním proudu souboru.
  2. Poté jsme read()metodu použili třikrát ke čtení 3 bajtů ze vstupního proudu souboru.
  3. Po přečtení bajtů jsme nyní znovu zkontrolovali dostupné bajty. Tentokrát se dostupné bajty snížily o 3.

metoda skip ()

Chcete-li zahodit a přeskočit zadaný počet bajtů, můžeme použít skip()metodu. Například,

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

Výstup

 Vstupní proud po přeskočení 5 bajtů: je řádek textu uvnitř souboru. 

Ve výše uvedeném příkladu jsme použili skip()metodu k přeskočení 5 bajtů dat ze vstupního proudu souboru. Bajty představující text „This“ proto nejsou čteny ze vstupního proudu.

metoda close ()

K uzavření vstupního proudu souboru můžeme použít close()metodu. Jakmile je close()metoda volána, nemůžeme použít vstupní proud ke čtení dat.

Ve všech výše uvedených příkladech jsme použili close()metodu k uzavření vstupního proudu souboru.

Další metody FileInputStream

Metody Popisy
finalize() zajišťuje, že je close()metoda volána
getChannel() vrací objekt FileChannelpřidružený ke vstupnímu proudu
getFD() vrací deskriptor souboru přidružený ke vstupnímu proudu
mark() označte pozici ve vstupním proudu, do které byla načtena data
reset() vrátí ovládací prvek do bodu ve vstupním proudu, kde byla nastavena značka

Další informace najdete v Java FileInputStream (oficiální dokumentace Java).

Zajímavé články...