I denne vejledning lærer vi om Java BufferedInputStream og dens metoder ved hjælp af eksempler.
Den BufferedInputStream
klasse af java.io
pakken anvendes sammen med andre input streams at læse data (i byte) mere effektivt.
Det udvider den InputStream
abstrakte klasse.
Arbejde med BufferedInputStream
Den BufferedInputStream
opretholder en intern buffer på 8192 byte .
Under læseoperationen indlæses BufferedInputStream
et 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 BufferedInputStream
skal vi først importere java.io.BufferedInputStream
pakken. 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 BufferdInputStream
navngivet buffer med den FileInputStream
navngivne 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 BufferedInputStream
klasse giver implementeringer for forskellige metoder præsentere i InputStream
klasse.
læs () Metode
read()
- læser en enkelt byte fra inputstrømmenread(byte() arr)
- læser bytes fra strømmen og gemmer i det angivne arrayread(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
- Vi bruger først
available()
metoden til at kontrollere antallet af tilgængelige bytes i inputstrømmen. - Derefter har vi brugt
read()
metoden 3 gange til at læse 3 bytes fra inputstrømmen. - 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).