Java BufferedInputStream (med eksempler)

I denne vejledning lærer vi om Java BufferedInputStream og dens metoder ved hjælp af eksempler.

Den BufferedInputStreamklasse af java.iopakken anvendes sammen med andre input streams at læse data (i byte) mere effektivt.

Det udvider den InputStreamabstrakte klasse.

Arbejde med BufferedInputStream

Den BufferedInputStreamopretholder en intern buffer på 8192 byte .

Under læseoperationen indlæses BufferedInputStreamet stykke byte fra disken og lagres i den interne buffer. Og fra den interne buffer læses bytes individuelt.

Derfor reduceres antallet af kommunikation til disken. Dette er grunden til at læse bytes er hurtigere ved hjælp af BufferedInputStream.

Opret en BufferedInputStream

For at oprette en BufferedInputStreamskal vi først importere java.io.BufferedInputStreampakken. Når vi først har importeret pakken, kan vi oprette inputstrømmen her.

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

I ovenstående eksempel har vi oprettet en BufferdInputStreamnavngivet buffer med den FileInputStreamnavngivne fil.

Her har den interne buffer standardstørrelse på 8192 bytes. Vi kan dog også specificere størrelsen på den interne buffer.

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

Bufferen hjælper med at læse bytes fra filerne hurtigere.

Metoder til BufferedInputStream

Den BufferedInputStreamklasse giver implementeringer for forskellige metoder præsentere i InputStreamklasse.

læs () Metode

  • read() - læser en enkelt byte fra inputstrømmen
  • read(byte() arr) - læser bytes fra strømmen og gemmer i det angivne array
  • read(byte() arr, int start, int length) - læser antallet af byte svarende til længden fra strømmen og gemmes i det specificerede array startende fra positionens start

Antag, at vi har en fil med navnet input.txt med følgende indhold.

 This is a line of text inside the file. 

Lad os prøve at læse filen ved hjælp af 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(); ) ) ) 

Produktion

 Dette er en tekstlinje inde i filen. 

I ovenstående eksempel har vi oprettet en bufferet inputstrøm med navnet buffer sammen med FileInputStream. Inputstrømmen er knyttet til filen input.txt .

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

Her har vi brugt read()metoden til at læse en række bytes fra den bufferbufferlæsers interne buffer.

tilgængelig () Metode

For at få antallet af tilgængelige bytes i inputstrømmen kan vi bruge 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(); ) ) ) 

Produktion

 Tilgængelige bytes i starten: 39 Tilgængelige bytes i slutningen: 36 

I ovenstående eksempel

  1. Vi bruger først available()metoden til at kontrollere antallet af tilgængelige bytes i inputstrømmen.
  2. Derefter har vi brugt read()metoden 3 gange til at læse 3 bytes fra inputstrømmen.
  3. Efter at have læst bytes har vi igen kontrolleret de tilgængelige bytes. Denne gang faldt de tilgængelige bytes med 3.

spring () Metode

For at kassere og springe det angivne antal bytes kan vi bruge 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(); ) ) ) 

Produktion

 Input stream efter at have sprunget over 5 byte: er en tekstlinje inde i filen. 

I ovenstående eksempel har vi brugt skip()metoden til at springe over 5 byte fra filinputstrømmen. Dermed de bytes 'T', 'h', 'i', 's'og ' 'springes fra input stream.

close () Metode

For at lukke den bufrede inputstrøm kan vi bruge close()metoden. Når close()metoden er kaldt, kan vi ikke bruge inputstrømmen til at læse dataene.

Andre metoder til BufferedInputStream

Metoder Beskrivelser
mark() markere positionen i inputstrømmen, op til hvilken data er blevet læst
reset() returnerer kontrolelementet til det punkt i inputstrømmen, hvor mærket blev sat

For at lære mere, besøg Java BufferdInputStream (officiel Java-dokumentation).

Interessante artikler...