Java ByteArrayInputStream: Praktischer Leitfaden zum Lesen von Byte-Arrays
Java ByteArrayInputStream
Dieser Artikel erklärt, wie man Javas ByteArrayInputStream verwendet, um Daten aus Byte-Arrays zu lesen – mit Konstruktoren, Kernmethoden und praktischen Beispielen.
Was ist ByteArrayInputStream?
Die ByteArrayInputStream Klasse, Teil des java.io Pakets, implementiert InputStream und ermöglicht es Ihnen, ein Byte-Array als Eingabestream zu behandeln. Sie speichert intern eine Kopie des übergebenen Arrays, was zufälligen Zugriff und effizientes Lesen erlaubt.
Hinweis: Der Stream liest aus dem Array selbst, nicht von einer externen Quelle, daher sind alle Operationen speicherbasiert.
ByteArrayInputStream erstellen
Importieren Sie java.io.ByteArrayInputStream und instanziieren Sie es. Sie können das gesamte Array oder einen Ausschnitt lesen.
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);
Der zweite Konstruktor liest length Bytes ab Index start.
Kernmethoden
read()
int read()– liest das nächste Byte oder-1, wenn das Ende erreicht ist.int read(byte[] b)– füllt das übergebene Array mit Daten.int read(byte[] b, int off, int len)– liest bis zulenBytes inbab Offsetoff.
Beispiel: Bytes lesen
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String[] args) {
byte[] array = {1, 2, 3, 4};
try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
System.out.print("Gelesene Bytes: ");
int value;
while ((value = input.read()) != -1) {
System.out.print(value + ", ");
}
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ausgabe
Gelesene Bytes: 1, 2, 3, 4,
available()
Gibt die Anzahl der noch verfügbaren Bytes ohne Blockieren zurück.
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String[] args) {
byte[] array = {1, 2, 3, 4};
try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
System.out.println("Initial: " + input.available());
input.read();
input.read();
System.out.println("Nach 2 reads: " + input.available());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ausgabe
Initial: 4 Nach 2 reads: 2
skip()
Verschiebt die Stream-Position um die angeforderte Anzahl Bytes.
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String[] args) {
byte[] array = {1, 2, 3, 4};
try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
input.skip(2);
System.out.print("Nach skip: ");
int value;
while ((value = input.read()) != -1) {
System.out.print(value + ", ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ausgabe
Nach skip: 3, 4,
close()
Das Schließen eines ByteArrayInputStream ist ein No-Op; der Stream kann danach weiterhin verwendet werden. Die Methode existiert nur für API-Kompatibilität.
Weitere nützliche Methoden
| Methode | Beschreibung |
|---|---|
mark(int readlimit) | Markiert die aktuelle Position. |
reset() | Kehrt zur letzten markierten Position zurück. |
markSupported() | Gibt immer true zurück. |
finalize() | Stellt sicher, dass Ressourcen freigegeben werden (keine Wirkung für diese Klasse). |
Für die vollständige API siehe die offizielle Java-Dokumentation.
Java
- Java Array-Kopiertechniken: Umfassender Leitfaden
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- Java instanceof-Operator: Ein umfassender Leitfaden
- Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
- Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
- Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
- Java Scanner meistern: Umfassender Leitfaden mit praktischen Beispielen
- Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen