Java BufferedInputStream (med eksempler)

I denne opplæringen vil vi lære om Java BufferedInputStream og dens metoder ved hjelp av eksempler.

Den BufferedInputStreamklasse av java.iopakken brukes sammen med andre inngangsstrømmer for å lese data (i byte) mer effektivt.

Det utvider den InputStreamabstrakte klassen.

Arbeid med BufferedInputStream

Den BufferedInputStreamopprettholder en intern buffer på 8192 byte .

Under leseoperasjonen leses BufferedInputStreamen bit byte fra disken og lagres i den interne bufferen. Og fra de interne bufferbytene leses hver for seg.

Derfor reduseres antall kommunikasjoner til disken. Dette er grunnen til at det er raskere å lese byte ved hjelp av BufferedInputStream.

Opprett en BufferedInputStream

For å opprette en BufferedInputStream, må vi importere java.io.BufferedInputStreampakken først. Når vi først har importert pakken, kan vi lage inngangsstrømmen her.

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

I eksemplet ovenfor har vi opprettet en BufferdInputStreamnavngitt buffer med den FileInputStreamnavngitte filen.

Her har den interne bufferen standardstørrelsen på 8192 byte. Vi kan imidlertid også spesifisere størrelsen på den interne bufferen.

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

Bufferen hjelper deg med å lese byte fra filene raskere.

Metoder for BufferedInputStream

Den BufferedInputStreamklasse gir implementeringer for forskjellige metoder for å medføre i InputStreamklassen.

les () Metode

  • read() - leser en enkelt byte fra inngangsstrømmen
  • read(byte() arr) - leser byte fra strømmen og lagrer i den angitte matrisen
  • read(byte() arr, int start, int length) - leser antall byte som er lik lengden fra strømmen og lagrer i den angitte matrisen fra posisjonsstart

Anta at vi har en fil som heter input.txt med følgende innhold.

 This is a line of text inside the file. 

La oss prøve å lese filen ved hjelp av 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(); ) ) ) 

Produksjon

 Dette er en tekstlinje i filen. 

I eksemplet ovenfor har vi opprettet en bufret inngangsstrøm med navnet buffer sammen med FileInputStream. Inngangsstrømmen er koblet til filen input.txt .

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

Her har vi brukt read()metoden til å lese en rekke byte fra den interne bufferen til den bufrede leseren.

tilgjengelig () Metode

For å få antall tilgjengelige byte i inngangsstrømmen, kan vi bruke available()metoden. For eksempel,

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

Produksjon

 Tilgjengelige byte i begynnelsen: 39 Tilgjengelige byte på slutten: 36 

I eksemplet ovenfor,

  1. Vi bruker først available()metoden for å sjekke antall tilgjengelige byte i inngangsstrømmen.
  2. Deretter har vi brukt read()metoden 3 ganger for å lese 3 byte fra inngangsstrømmen.
  3. Nå, etter å ha lest byte, har vi igjen sjekket tilgjengelige byte. Denne gangen reduserte de tilgjengelige byte med 3.

skip () Metode

For å forkaste og hoppe over det angitte antallet byte, kan vi bruke skip()metoden. For eksempel,

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

Produksjon

 Inngangsstrøm etter å ha hoppet over 5 byte: er en tekstlinje i filen. 

I eksemplet ovenfor har vi brukt skip()metoden til å hoppe over 5 byte fra filinngangsstrømmen. Derfor bytes 'T', 'h', 'i', 's'og ' 'hoppes fra inngangsstrømmen.

lukk () Metode

For å lukke den bufrede inngangsstrømmen kan vi bruke close()metoden. Når close()metoden er kalt, kan vi ikke bruke inngangsstrømmen til å lese dataene.

Andre metoder for BufferedInputStream

Metoder Beskrivelser
mark() merk posisjonen i inngangsstrømmen som data er lest opp til
reset() returnerer kontrollen til punktet i inngangsstrømmen der merket ble satt

For å lære mer, besøk Java BufferdInputStream (offisiell Java-dokumentasjon).

Interessante artikler...