Java ByteArrayInputStream (mit Beispielen)

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

Die ByteArrayInputStreamKlasse des java.ioPakets kann zum Lesen eines Arrays von Eingabedaten (in Bytes) verwendet werden.

Es erweitert die InputStreamabstrakte Klasse.

Hinweis : In ByteArrayInputStreamwird der Eingabestream mithilfe des Bytearrays erstellt. Es enthält ein internes Array zum Speichern von Daten dieses bestimmten Byte-Arrays.

Erstellen Sie einen ByteArrayInputStream

Um einen Byte-Array-Eingabestream zu erstellen, müssen wir java.io.ByteArrayInputStreamzuerst das Paket importieren . Sobald wir das Paket importiert haben, können wir hier einen Eingabestream erstellen.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Hier haben wir einen Eingabestream erstellt, der ganze Daten aus dem arrArray liest . Wir können jedoch auch den Eingabestream erstellen, der nur einige Daten aus dem Array liest.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Hier liest der Eingabestream die Anzahl der Bytes, die der Länge entsprechen, aus dem Array ab der Startposition.

Methoden von ByteArrayInputStream

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

read () Methode

  • read() - liest das einzelne Byte aus dem im Eingabestream vorhandenen Array
  • read(byte() array) - liest Bytes aus dem Eingabestream und speichert sie im angegebenen Array
  • read(byte() array, int start, int length) - liest die Anzahl der Bytes, die der Länge entsprechen, aus dem Stream und speichert sie ab dem Positionsstart im angegebenen Array

Beispiel: ByteArrayInputStream zum Lesen von Daten

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Ausgabe

 Die aus dem Eingabestream gelesenen Bytes: 1, 2, 3, 4, 

Im obigen Beispiel haben wir einen Byte-Array-Eingabestream mit dem Namen erstellt input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Hier enthält der Eingabestream alle Daten aus dem angegebenen Array. Um Daten aus dem Eingabestream zu lesen, haben wir die read()Methode verwendet.

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.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Ausgabe

 Verfügbare Bytes am Anfang: 4 Verfügbare Bytes am Ende: 2 

Im obigen Beispiel ist

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

skip () Methode

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

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Ausgabe

 Eingabestream nach Überspringen von 2 Bytes: 3, 4, 

Im obigen Beispiel haben wir die skip () -Methode verwendet, um 2 Datenbytes aus dem Eingabestream zu überspringen. Daher werden 1 und 2 nicht aus dem Eingabestream gelesen.

close () Methode

Um den Eingabestream zu schließen, können wir die close()Methode verwenden.

Die close()Methode hat jedoch keine Auswirkungen auf die ByteArrayInputStreamKlasse. Wir können die Methoden dieser Klasse auch nach dem close()Aufruf der Methode verwenden.

Andere Methoden von ByteArrayInputStream

Methoden Beschreibungen
finalize() stellt sicher, dass die close()Methode aufgerufen wird
mark() markiert 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
markSupported() prüft, ob der Eingabestream mark()und unterstütztreset()

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

Interessante Beiträge...