„Java BufferedInputStream“ (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java BufferedInputStream“ ir jos metodus.

BufferedInputStreamKlasės java.iopakuotėje yra naudojamas kartu su kitais įvesties srautų skaityti duomenis (baitais) efektyviau.

Tai pratęsia InputStreamabstrakčią klasę.

„BufferedInputStream“ darbas

BufferedInputStreamPalaiko vidaus buferį 8192 baitų .

Atliekant skaitymo operaciją BufferedInputStream, baitų dalis nuskaitoma iš disko ir laikoma vidiniame buferyje. Iš vidinio buferio baitai nuskaitomi atskirai.

Taigi sumažėja ryšio į diską skaičius. Štai kodėl naudojant baitą greičiau skaityti baitus BufferedInputStream.

Sukurkite „BufferedInputStream“

Norėdami sukurti „a“ BufferedInputStream, pirmiausia turime importuoti java.io.BufferedInputStreampaketą. Kai importuosime paketą, galime sukurti įvesties srautą.

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

Ankstesniame pavyzdyje mes sukūrėme BufferdInputStreampavadintą buferį su FileInputStreampavadintu failu.

Čia vidinio buferio numatytasis dydis yra 8192 baitai. Tačiau mes galime nurodyti ir vidinio buferio dydį.

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

Buferis padės greičiau nuskaityti baitus iš failų.

„BufferedInputStream“ metodai

BufferedInputStreamKlasė suteikia realizacijos įvairių metodų pristatyti į InputStreamklasę.

skaityti () metodas

  • read() - nuskaito vieną baitą iš įvesties srauto
  • read(byte() arr) - skaito baitus iš srauto ir saugo nurodytame masyve
  • read(byte() arr, int start, int length) - nuskaito baitų skaičių, lygų ilgiui iš srauto ir saugo nurodytame masyve, pradedant nuo pozicijos pradžios

Tarkime, kad turime failą pavadinimu input.txt su tokiu turiniu.

 This is a line of text inside the file. 

Pabandykime perskaityti failą naudodami 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(); ) ) ) 

Rezultatas

 Tai yra teksto eilutė failo viduje. 

Ankstesniame pavyzdyje mes sukūrėme buferinį įvesties srautą, pavadintą buferis kartu su FileInputStream. Įvesties srautas susietas su failu input.txt .

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

Čia mes naudojome read()metodą, kad nuskaitytume baitų masyvą iš buferinio skaitytuvo vidinio buferio.

galima () metodas

Norėdami gauti įvesties sraute galimų baitų skaičių, galime naudoti available()metodą. Pavyzdžiui,

 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(); ) ) ) 

Rezultatas

 Galimi baitai pradžioje: 39 Galimi baitai pabaigoje: 36 

Ankstesniame pavyzdyje

  1. Pirmiausia mes naudojome available()metodą, kad patikrintume galimų baitų skaičių įvesties sraute.
  2. Tada mes read()3 kartus naudojome metodą, kad nuskaitytume 3 baitus iš įvesties srauto.
  3. Perskaitę baitus, mes dar kartą patikrinome galimus baitus. Šį kartą turimi baitai sumažėjo 3.

praleisti () metodas

Norėdami išmesti ir praleisti nurodytą skaičių baitų, galime naudoti skip()metodą. Pavyzdžiui,

 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(); ) ) ) 

Rezultatas

 Įvesties srautas praleidus 5 baitus: yra teksto eilutė failo viduje. 

Ankstesniame pavyzdyje mes naudojome skip()metodą, kad praleistume 5 baitus iš failo įvesties srauto. Taigi, baitai 'T', 'h', 'i', 's'ir ' 'yra praleidžiami iš įvesties srauto.

uždaryti () metodas

Norėdami uždaryti buferinį įvesties srautą, galime naudoti close()metodą. Iškvietus close()metodą, negalime naudoti įvesties srauto duomenims nuskaityti.

Kiti „BufferedInputStream“ metodai

Metodai Aprašymai
mark() pažymėkite įvesties srauto vietą, iki kurios duomenys buvo perskaityti
reset() grąžina valdiklį į tašką įvesties sraute, kuriame buvo nustatytas ženklas

Norėdami sužinoti daugiau, apsilankykite „Java BufferdInputStream“ (oficiali „Java“ dokumentacija).

Įdomios straipsniai...