V tej vadnici bomo s pomočjo primerov spoznali Java BufferedInputStream in njene metode.
BufferedInputStream
Razred java.io
paketa se uporablja pri drugih vhodnih tokov za bolj učinkovito branje podatkov (v bajtih).
Razširja InputStream
abstraktni razred.
Delovanje BufferedInputStream
BufferedInputStream
Ohranja notranji medpomnilnik 8192 bajtov .
Med operacijo branja v BufferedInputStream
, se z diska prebere del bajtov in shrani v notranji vmesni pomnilnik. In iz notranjega medpomnilnika se bajti preberejo posamezno.
Zato se zmanjša število komunikacij na disk. Zato je branje bajtov hitrejše z uporabo BufferedInputStream
.
Ustvarite BufferedInputStream
Če želite ustvariti a BufferedInputStream
, moramo najprej uvoziti java.io.BufferedInputStream
paket. Ko uvozimo paket, je tukaj, kako lahko ustvarimo vhodni tok.
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
V zgornjem primeru smo BufferdInputStream
z FileInputStream
imenovano datoteko ustvarili imenovani vmesni pomnilnik .
Tu ima privzeta velikost notranjega medpomnilnika 8192 bajtov. Lahko pa določimo tudi velikost notranjega vmesnega pomnilnika.
// Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
Medpomnilnik bo pomagal hitreje prebrati bajte iz datotek.
Metode BufferedInputStream
BufferedInputStream
Razred določa izvedb za različne načine predstaviti v InputStream
razredu.
metoda read ()
read()
- prebere en bajt iz vhodnega tokaread(byte() arr)
- bere bajte iz toka in shrani v določeno matrikoread(byte() arr, int start, int length)
- iz toka prebere število bajtov, enako dolžini, in shrani v določeno matriko, začenši z začetkom položaja
Recimo, da imamo datoteko z imenom input.txt z naslednjo vsebino.
This is a line of text inside the file.
Poskusimo datoteko prebrati z 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(); ) ) )
Izhod
To je vrstica besedila znotraj datoteke.
V zgornjem primeru smo skupaj z ustvarili medpomnilniški vhodni tok z imenom buffer FileInputStream
. Vhodni tok je povezan z datoteko input.txt .
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
Tu smo read()
metodo uporabili za branje niza bajtov iz notranjega vmesnega pomnilnika medpomnilnika.
na voljo () Metoda
Za pridobitev števila razpoložljivih bajtov v vhodnem toku lahko uporabimo available()
metodo. Na primer
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(); ) ) )
Izhod
Razpoložljivi bajti na začetku: 39 Na voljo bajti na koncu: 36
V zgornjem primeru je
available()
Metodo najprej uporabimo za preverjanje števila razpoložljivih bajtov v vhodnem toku.- Nato smo
read()
metodo trikrat uporabili za branje 3 bajtov iz vhodnega toka. - Zdaj smo po branju bajtov ponovno preverili razpoložljive bajte. Tokrat so se razpoložljivi bajti zmanjšali za 3.
preskoči () Metoda
Če želimo zavreči in preskočiti določeno število bajtov, lahko uporabimo skip()
metodo. Na primer
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(); ) ) )
Izhod
Vhodni tok po preskoku 5 bajtov: je vrstica besedila znotraj datoteke.
V zgornjem primeru smo skip()
metodo uporabili za preskok 5 bajtov iz vhodnega toka datoteke. Zato, bajta 'T'
, 'h'
, 'i'
, 's'
in ' '
se preskočijo iz vhodnega toka.
metoda close ()
Če želimo zapreti medpomnjeni vhodni tok, lahko uporabimo close()
metodo. Ko je close()
metoda enkrat poklicana, ne moremo uporabiti vhodnega toka za branje podatkov.
Druge metode BufferedInputStream
Metode | Opisi |
---|---|
mark() | označite položaj v vhodnem toku, do katerega so bili prebrani podatki |
reset() | vrne kontrolnik na točko v vhodnem toku, kjer je bila nastavljena oznaka |
Če želite izvedeti več, obiščite Java BufferdInputStream (uradna dokumentacija Java).