V tomto kurzu se na příkladech dozvíme o prostředí Java BufferedInputStream a jeho metodách.
BufferedInputStreamTřída java.iobalíčku se používá spolu s dalšími vstupními proudy ke čtení dat (v bytech) efektivněji.
Rozšiřuje InputStreamabstraktní třídu.

Práce BufferedInputStream
BufferedInputStreamUdržuje vnitřní vyrovnávací paměti 8192 bajtů .
Během operace čtení BufferedInputStreamje z disku načten kus bajtů a uložen do vnitřní vyrovnávací paměti. A z interní vyrovnávací paměti jsou bajty čteny jednotlivě.
Proto je snížen počet komunikace na disk. Proto je čtení bajtů rychlejší pomocí BufferedInputStream.
Vytvořte BufferedInputStream
Aby bylo možné vytvořit BufferedInputStream, musíme java.io.BufferedInputStreamnejprve importovat balíček. Jakmile naimportujeme balíček, můžeme vytvořit vstupní proud.
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
Ve výše uvedeném příkladu jsme vytvořili BufferdInputStreampojmenovanou vyrovnávací paměť s FileInputStreampojmenovaným souborem.
Zde má vnitřní vyrovnávací paměť výchozí velikost 8192 bajtů. Můžeme však také určit velikost vnitřní vyrovnávací paměti.
// Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
Vyrovnávací paměť pomůže rychleji číst bajty ze souborů.
Metody BufferedInputStream
BufferedInputStreamTřída poskytuje implementace pro různé metody prezentovat ve InputStreamtřídě.
metoda read ()
read()- načte jeden bajt ze vstupního prouduread(byte() arr)- čte bajty ze streamu a ukládá je do zadaného poleread(byte() arr, int start, int length)- načte počet bytů rovný délce ze streamu 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 soubor přečíst pomocí BufferedInputStream.
import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file 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
Toto je řádek textu uvnitř souboru.
Ve výše uvedeném příkladu jsme vytvořili vstupní proud s vyrovnávací pamětí s názvem buffer spolu s FileInputStream. Vstupní proud je propojen se souborem input.txt .
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
Zde jsme použili read()metodu pro načtení pole bajtů z vnitřní vyrovnávací paměti čtečky s vyrovnávací pamětí.
dostupná metoda ()
Chcete-li získat počet dostupných bajtů ve vstupním proudu, můžeme použít available()metodu. Například,
import java.io.FileInputStream; import java.io.BufferedInputStream; 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 file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.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. - Poté jsme
read()metodu použili třikrát ke čtení 3 bajtů ze vstupního proudu. - 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; import java.io.BufferedInputStream; 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 file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.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ů ze vstupního proudu souboru. Proto, bytů 'T', 'h', 'i', 's'a ' 'jsou vynechány ze vstupního proudu.
metoda close ()
Chcete-li zavřít vstupní proud s vyrovnávací pamětí, můžeme použít close()metodu. Jakmile je close()metoda volána, nemůžeme ke čtení dat použít vstupní proud.
Další metody BufferedInputStream
| Metody | Popisy |
|---|---|
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 BufferdInputStream (oficiální dokumentace Java).








