Java BufferedInputStream (z primeri)

V tej vadnici bomo s pomočjo primerov spoznali Java BufferedInputStream in njene metode.

BufferedInputStreamRazred java.iopaketa se uporablja pri drugih vhodnih tokov za bolj učinkovito branje podatkov (v bajtih).

Razširja InputStreamabstraktni razred.

Delovanje BufferedInputStream

BufferedInputStreamOhranja 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.BufferedInputStreampaket. 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 BufferdInputStreamz FileInputStreamimenovano 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

BufferedInputStreamRazred določa izvedb za različne načine predstaviti v InputStreamrazredu.

metoda read ()

  • read() - prebere en bajt iz vhodnega toka
  • read(byte() arr) - bere bajte iz toka in shrani v določeno matriko
  • read(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

  1. available()Metodo najprej uporabimo za preverjanje števila razpoložljivih bajtov v vhodnem toku.
  2. Nato smo read()metodo trikrat uporabili za branje 3 bajtov iz vhodnega toka.
  3. 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).

Zanimive Članki...