I denna handledning lär vi oss om Java BufferedInputStream och dess metoder med hjälp av exempel.
Paketets BufferedInputStream
klass java.io
används med andra ingångsströmmar för att läsa data (i byte) mer effektivt.
Det utvidgar den InputStream
abstrakta klassen.
Arbeta med BufferedInputStream
Den BufferedInputStream
upprätthåller en intern buffert på 8192 byte .
Under läsoperationen läses BufferedInputStream
en bit bitar från disken och lagras i den interna bufferten. Och från de interna buffertläsarna läses individuellt.
Följaktligen minskar antalet kommunikationer till skivan. Det är därför läsning av byte går snabbare med BufferedInputStream
.
Skapa en BufferedInputStream
För att skapa ett BufferedInputStream
måste vi först importera java.io.BufferedInputStream
paketet. När vi väl har importerat paketet här kan vi skapa inmatningsströmmen.
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
I exemplet ovan har vi skapat en BufferdInputStream
namngiven buffert med den FileInputStream
namngivna filen.
Här har den interna bufferten standardstorleken 8192 byte. Vi kan dock också specificera storleken på den interna bufferten.
// Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
Bufferten hjälper till att läsa byte från filerna snabbare.
Metoder för BufferedInputStream
Den BufferedInputStream
klass erbjuder implementeringar för olika metoder att presentera i InputStream
klassen.
läs () Metod
read()
- läser en enda byte från ingångsströmmenread(byte() arr)
- läser byte från strömmen och lagras i den angivna matrisenread(byte() arr, int start, int length)
- läser antalet byte som är lika med längden från strömmen och lagras i den angivna matrisen med start från positionens start
Antag att vi har en fil med namnet input.txt med följande innehåll.
This is a line of text inside the file.
Låt oss försöka läsa filen med 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
Det här är en textrad i filen.
I exemplet ovan har vi skapat en buffrad ingångsström med namnet buffert tillsammans med FileInputStream
. Ingångsströmmen är länkad till filen input.txt .
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
Här har vi använt read()
metoden för att läsa en rad byte från den buffrade läsarens interna buffert.
tillgänglig () Metod
För att få antalet tillgängliga byte i ingångsströmmen kan vi använda available()
metoden. Till exempel,
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
Tillgängliga byte i början: 39 Tillgängliga byte i slutet: 36
I exemplet ovan,
- Vi använder först
available()
metoden för att kontrollera antalet tillgängliga byte i ingångsströmmen. - Sedan har vi använt
read()
metoden tre gånger för att läsa 3 byte från ingångsströmmen. - Nu, efter att ha läst byten, har vi igen kontrollerat tillgängliga byte. Den här gången minskade de tillgängliga byten med 3.
skip () Metod
För att kasta och hoppa över det angivna antalet byte kan vi använda skip()
metoden. Till exempel,
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
Inmatningsströmmen efter att ha hoppat över 5 byte: är en textrad i filen.
I exemplet ovan har vi använt skip()
metoden för att hoppa över 5 byte från filinmatningsströmmen. Därför byte 'T'
, 'h'
, 'i'
, 's'
och ' '
hoppas över från ingångsströmmen.
close () Metod
För att stänga den buffrade ingångsströmmen kan vi använda close()
metoden. När close()
metoden väl har anropats kan vi inte använda ingångsströmmen för att läsa data.
Andra metoder för BufferedInputStream
Metoder | Beskrivningar |
---|---|
mark() | markera positionen i ingångsströmmen till vilken data har lästs |
reset() | återgår kontrollen till den punkt i ingångsströmmen där märket sattes |
För att lära dig mer, besök Java BufferdInputStream (officiell Java-dokumentation).