Java BufferedInputStream (mit Beispielen)

In diesem Tutorial lernen wir anhand von Beispielen Java BufferedInputStream und seine Methoden kennen.

Die BufferedInputStreamKlasse des java.ioPakets wird mit anderen Eingabestreams verwendet, um die Daten (in Bytes) effizienter zu lesen.

Es erweitert die InputStreamabstrakte Klasse.

Funktionieren von BufferedInputStream

Der BufferedInputStreamverwaltet einen internen Puffer von 8192 Bytes .

Während BufferedInputStreamdes Lesevorgangs wird ein Teil der Bytes von der Festplatte gelesen und im internen Puffer gespeichert. Und aus dem internen Puffer werden Bytes einzeln gelesen.

Daher wird die Anzahl der Kommunikation mit der Platte reduziert. Aus diesem Grund ist das Lesen von Bytes mit dem schneller BufferedInputStream.

Erstellen Sie einen BufferedInputStream

Um ein zu erstellen BufferedInputStream, müssen wir java.io.BufferedInputStreamzuerst das Paket importieren . Sobald wir das Paket hier importiert haben, können wir den Eingabestream erstellen.

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

Im obigen Beispiel haben wir einen BufferdInputStreambenannten Puffer mit der FileInputStreambenannten Datei erstellt.

Hier hat der interne Puffer die Standardgröße von 8192 Bytes. Wir können jedoch auch die Größe des internen Puffers angeben.

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

Der Puffer hilft dabei, Bytes aus den Dateien schneller zu lesen.

Methoden von BufferedInputStream

Die BufferedInputStreamKlasse bietet Implementierungen für verschiedene in der InputStreamKlasse vorhandene Methoden .

read () Methode

  • read() - liest ein einzelnes Byte aus dem Eingabestream
  • read(byte() arr) - liest Bytes aus dem Stream und speichert sie im angegebenen Array
  • read(byte() arr, int start, int length) - liest die Anzahl der Bytes, die der Länge des Streams entsprechen, und speichert sie ab dem Positionsstart im angegebenen Array

Angenommen, wir haben eine Datei mit dem Namen input.txt mit dem folgenden Inhalt.

 This is a line of text inside the file. 

Versuchen wir, die Datei mit zu lesen 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(); ) ) ) 

Ausgabe

 Dies ist eine Textzeile in der Datei. 

Im obigen Beispiel haben wir einen gepufferten Eingabestream mit dem Namen buffer zusammen mit erstellt FileInputStream. Der Eingabestream ist mit der Datei input.txt verknüpft .

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

Hier haben wir die read()Methode verwendet, um ein Array von Bytes aus dem internen Puffer des gepufferten Lesegeräts zu lesen.

verfügbare () Methode

Um die Anzahl der verfügbaren Bytes im Eingabestream zu ermitteln, können wir die available()Methode verwenden. Beispielsweise,

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

Ausgabe

 Verfügbare Bytes am Anfang: 39 Verfügbare Bytes am Ende: 36 

Im obigen Beispiel ist

  1. Wir verwenden zuerst die available()Methode, um die Anzahl der verfügbaren Bytes im Eingabestream zu überprüfen.
  2. Dann haben wir die read()Methode dreimal verwendet, um 3 Bytes aus dem Eingabestream zu lesen.
  3. Nachdem wir die Bytes gelesen haben, haben wir die verfügbaren Bytes erneut überprüft. Diesmal verringerten sich die verfügbaren Bytes um 3.

skip () Methode

Um die angegebene Anzahl von Bytes zu verwerfen und zu überspringen, können wir die skip()Methode verwenden. Beispielsweise,

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

Ausgabe

 Eingabestream nach dem Überspringen von 5 Bytes: ist eine Textzeile in der Datei. 

Im obigen Beispiel haben wir die skip()Methode verwendet, um 5 Bytes aus dem Dateieingabestream zu überspringen. Somit werden die Bytes 'T', 'h', 'i', 's'und ' 'werden aus dem Eingabestrom übersprungen.

close () Methode

Um den gepufferten Eingabestream zu schließen, können wir die close()Methode verwenden. Sobald die close()Methode aufgerufen wurde, können wir den Eingabestream nicht mehr zum Lesen der Daten verwenden.

Andere Methoden von BufferedInputStream

Methoden Beschreibungen
mark() Markieren Sie die Position im Eingabestream, bis zu der Daten gelesen wurden
reset() Bringt das Steuerelement an den Punkt im Eingabestream zurück, an dem die Markierung gesetzt wurde

Weitere Informationen finden Sie unter Java BufferdInputStream (offizielle Java-Dokumentation).

Interessante Beiträge...