In diesem Tutorial lernen wir anhand von Beispielen Java ByteArrayInputStream und seine Methoden kennen.
Die ByteArrayInputStream
Klasse des java.io
Pakets kann zum Lesen eines Arrays von Eingabedaten (in Bytes) verwendet werden.
Es erweitert die InputStream
abstrakte Klasse.
Hinweis : In ByteArrayInputStream
wird 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.ByteArrayInputStream
zuerst 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 arr
Array 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 ByteArrayInputStream
Klasse bietet Implementierungen für verschiedene in der InputStream
Klasse vorhandene Methoden .
read () Methode
read()
- liest das einzelne Byte aus dem im Eingabestream vorhandenen Arrayread(byte() array)
- liest Bytes aus dem Eingabestream und speichert sie im angegebenen Arrayread(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
- Wir haben die
available()
Methode verwendet, um die Anzahl der verfügbaren Bytes im Eingabestream zu überprüfen. - Wir haben die
read()
Methode dann 2 Mal verwendet, um 2 Bytes aus dem Eingabestream zu lesen. - 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 ByteArrayInputStream
Klasse. 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).