V tomto výučbe sa pomocou príkladov dozvieme o prostredí Java BufferedInputStream a jeho metódach.
BufferedInputStream
Trieda java.io
balíčku sa používa spolu s ďalšími vstupnými prúdmi na čítanie dát (v bytoch) efektívnejšie.
Rozširuje InputStream
abstraktnú triedu.
Práca BufferedInputStream
BufferedInputStream
Udržuje vnútornej vyrovnávacej pamäte 8192 bajtov .
Počas operácie čítania v BufferedInputStream
sa 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.BufferedInputStream
balí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 BufferdInputStream
pomenovanú vyrovnávaciu pamäť s FileInputStream
pomenovaný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
BufferedInputStream
Trieda poskytuje implementácie pre rôzne metódy prezentovať vo InputStream
triede.
metóda read ()
read()
- načíta zo vstupného toku jeden bajtread(byte() arr)
- číta bajty z streamu a ukladá ich do zadaného poľaread(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
- Najprv pomocou tejto
available()
metódy skontrolujeme počet dostupných bajtov vo vstupnom toku. - Potom sme
read()
metódu použili trikrát na načítanie 3 bajtov zo vstupného toku. - 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).