V tomto tutoriálu se pomocí příkladů seznámíme s Java FileInputStream a jeho metodami.
FileInputStream
Třída java.io
obalu lze použít ke čtení dat (v bytech) ze souborů.
Rozšiřuje InputStream
abstraktní 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.FileInputStream
nejprve 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
FileInputStream
Třída poskytuje implementace pro různé metody prezentovat ve InputStream
třídě.
metoda read ()
read()
- načte ze souboru jeden bajtread(byte() array)
- načte bajty ze souboru a uloží je do zadaného poleread(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
- Nejprve pomocí této
available()
metody zkontrolujeme počet dostupných bajtů ve vstupním proudu souboru. - Poté jsme
read()
metodu použili třikrát ke čtení 3 bajtů ze vstupního proudu souboru. - 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 FileChannel př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).