Java BufferedInputStream (med exempel)

I denna handledning lär vi oss om Java BufferedInputStream och dess metoder med hjälp av exempel.

Paketets BufferedInputStreamklass java.ioanvänds med andra ingångsströmmar för att läsa data (i byte) mer effektivt.

Det utvidgar den InputStreamabstrakta klassen.

Arbeta med BufferedInputStream

Den BufferedInputStreamupprätthåller en intern buffert på 8192 byte .

Under läsoperationen läses BufferedInputStreamen 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 BufferedInputStreammåste vi först importera java.io.BufferedInputStreampaketet. 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 BufferdInputStreamnamngiven buffert med den FileInputStreamnamngivna 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 BufferedInputStreamklass erbjuder implementeringar för olika metoder att presentera i InputStreamklassen.

läs () Metod

  • read() - läser en enda byte från ingångsströmmen
  • read(byte() arr) - läser byte från strömmen och lagras i den angivna matrisen
  • read(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,

  1. Vi använder först available()metoden för att kontrollera antalet tillgängliga byte i ingångsströmmen.
  2. Sedan har vi använt read()metoden tre gånger för att läsa 3 byte från ingångsströmmen.
  3. 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).

Intressanta artiklar...