Java BufferedInputStream (s příklady)

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 proudu
  • read(byte() arr) - čte bajty ze streamu a ukládá je do zadaného pole
  • read(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

  1. Nejprve pomocí této available()metody zkontrolujeme počet dostupných bajtů ve vstupním proudu.
  2. Poté jsme read()metodu použili třikrát ke čtení 3 bajtů ze vstupního proudu.
  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; 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).

Zajímavé články...