Java BufferedInputStream (s príkladmi)

V tomto výučbe sa pomocou príkladov dozvieme o prostredí Java BufferedInputStream a jeho metódach.

BufferedInputStreamTrieda java.iobalíčku sa používa spolu s ďalšími vstupnými prúdmi na čítanie dát (v bytoch) efektívnejšie.

Rozširuje InputStreamabstraktnú triedu.

Práca BufferedInputStream

BufferedInputStreamUdržuje vnútornej vyrovnávacej pamäte 8192 bajtov .

Počas operácie čítania v BufferedInputStreamsa z disku načíta blok bajtov a uloží sa do internej medzipamäte. A z internej vyrovnávacej pamäte sa byty načítajú jednotlivo.

Preto sa zníži počet komunikácií na disk. Preto je čítanie bajtov rýchlejšie pomocou BufferedInputStream.

Vytvorte BufferedInputStream

Aby sme vytvorili BufferedInputStream, musíme najskôr importovať java.io.BufferedInputStreambalík. Po importovaní balíka tu môžeme vytvoriť vstupný prúd.

 // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); 

Vo vyššie uvedenom príklade sme vytvorili BufferdInputStreampomenovanú vyrovnávaciu pamäť s FileInputStreampomenovaným súborom.

Tu má interná vyrovnávacia pamäť predvolenú veľkosť 8192 bajtov. Môžeme však určiť aj veľkosť internej medzipamäte.

 // Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size); 

Vyrovnávacia pamäť pomôže rýchlejšie načítať bajty zo súborov.

Metódy BufferedInputStream

BufferedInputStreamTrieda poskytuje implementácie pre rôzne metódy prezentovať vo InputStreamtriede.

metóda read ()

  • read() - načíta zo vstupného toku jeden bajt
  • read(byte() arr) - číta bajty z streamu a ukladá ich do zadaného poľa
  • read(byte() arr, int start, int length) - načíta počet bajtov rovný dĺžke z toku a uloží do určeného poľa počnúc začiatkom pozície

Predpokladajme, že máme súbor s názvom input.txt s nasledujúcim obsahom.

 This is a line of text inside the file. 

Pokúsme sa prečítať súbor pomocou 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ýkon

 Toto je riadok textu vo vnútri súboru. 

Vo vyššie uvedenom príklade sme spolu s vytvorili vstupný prúd s vyrovnávacou pamäťou FileInputStream. Vstupný prúd je prepojený so súborom input.txt .

 FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); 

Tu sme použili read()metódu na načítanie poľa bajtov z internej medzipamäte čítačky s medzipamäťou.

metóda dostupná ()

Na získanie počtu dostupných bajtov vo vstupnom toku môžeme použiť available()metódu. Naprí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ýkon

 Dostupné bajty na začiatku: 39 Dostupné bajty na konci: 36 

Vo vyššie uvedenom príklade

  1. Najprv pomocou tejto available()metódy skontrolujeme počet dostupných bajtov vo vstupnom toku.
  2. Potom sme read()metódu použili trikrát na načítanie 3 bajtov zo vstupného toku.
  3. Teraz po prečítaní bajtov sme znova skontrolovali dostupné bajty. Dostupné bajty sa tentoraz znížili o 3.

metóda skip ()

Na zahodenie a preskočenie zadaného počtu bajtov môžeme použiť skip()metódu. Naprí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ýkon

 Vstupný prúd po preskočení 5 bajtov: je riadok textu vo vnútri súboru. 

Vo vyššie uvedenom príklade sme použili skip()metódu na preskočenie 5 bajtov zo vstupného toku súborov. Preto, bytov 'T', 'h', 'i', 's'a ' 'sú vynechané zo vstupného prúdu.

metóda close ()

Na uzavretie vyrovnávacieho vstupného toku môžeme použiť túto close()metódu. Po close()zavolaní metódy nemôžeme na načítanie údajov použiť vstupný tok.

Ďalšie metódy BufferedInputStream

Metódy Popisy
mark() označte pozíciu vo vstupnom prúde, do ktorej boli načítané údaje
reset() vráti ovládací prvok do bodu vo vstupnom toku, kde bola nastavená značka

Ak sa chcete dozvedieť viac, navštívte Java BufferdInputStream (oficiálna dokumentácia Java).

Zaujímavé články...