Freigeben über


SubStream Klasse

  • java.lang.Object
    • InputStream
      • com.microsoft.azure.storage.blob.SubStream

public class SubStream

Zusammenfassung zum Konstruktor

Konstruktor Beschreibung
SubStream(InputStream source, long startIndex, long streamLength, Object lock)

Erstellt einen neuen Unterstream instance, der den umschlossenen Stream von bis zu partitioniert. Jeder Teilstrom instance, der denselben zugrunde liegenden umschließt, muss den gleichen gegenseitigen Ausschluss aufweisen, um Racebedingungen durch gleichzeitige Vorgänge zu vermeiden.

Methodenzusammenfassung

Modifizierer und Typ Methode und Beschreibung
void close()

Schließt den Teilstrom.

InputStream getInputStream()
long getLength()
synchronized void mark(int readlimit)

Markiert die aktuelle Position im Teilstream. Bei einem nachfolgenden Aufruf der -Methode wird der Stream an dieser gespeicherten Position neu positioniert.

boolean markSupported()

Die Substream-Wrapperklasse ist nur mit markierbaren Eingabedatenströmen kompatibel und gibt daher immer true zurück. Diese Anforderung wird im Klassenkonstruktor erzwungen.

int read()

Liest das nächste Byte der Daten aus dem umschlossenen Stream. Das Wertbyte wird als im Bereich von zurückgegeben. Wenn kein Byte verfügbar ist, weil das Ende des Teilstreams erreicht wurde, wird der Wert zurückgegeben. Diese Methode blockiert, bis Eingabedaten verfügbar sind, das Ende des Datenstroms erkannt oder eine Ausnahme ausgelöst wird.

synchronized int read(byte[] b)

Liest eine bestimmte Anzahl von Bytes aus dem umschlossenen Stream und speichert sie im Pufferarray . Die Anzahl der tatsächlich gelesenen Bytes wird als ganze Zahl zurückgegeben. Diese Methode blockiert, bis Eingabedaten verfügbar sind, das Dateiende erkannt wird oder eine Ausnahme ausgelöst wird.

Wenn die Länge von null ist, werden keine Bytes gelesen und zurückgegeben. Andernfalls wird versucht, mindestens ein Byte zu lesen. Wenn kein Byte verfügbar ist, weil sich der Teilstrom am Ende der Datei befindet, wird der Wert zurückgegeben. Andernfalls wird mindestens ein Byte gelesen und in gespeichert.

Das erste gelesene Byte wird im -Element gespeichert, das nächste in , usw. Die Anzahl der gelesenen Bytes entspricht höchstens der Länge von . Lassen Sie k die Anzahl der tatsächlich gelesenen Bytes sein; Diese Bytes werden in Elementen über k gespeichert, sodass elemente k bis nicht betroffen bleiben.

Die -Methode für die -Klasse hat die gleiche Auswirkung wie:

synchronized int read(byte[] b, int off, int len)

Liest bis zu Bytes von Daten aus dem Teilstream. Puffert Daten aus dem umschlossenen Stream, um den Aufwand für Überspringen und Lesen zu minimieren. Der Wrappedstream wird nur aufgerufen, wenn der readBuffer die Leseanforderung nicht erfüllen kann. Um gültige Ergebnisse sicherzustellen, muss der umschlossene Stream vor dem Lesen aus dem Teilstream markiert werden. Dadurch können wir auf die relative Teilstreamposition im umschlossenen Stream zurücksetzen. Die Anzahl der tatsächlich gelesenen Bytes wird als ganze Zahl zurückgegeben. Alle diese Vorgänge werden synchron innerhalb einer systeminternen Sperre ausgeführt, um sicherzustellen, dass andere gleichzeitige Anforderungen von Substreaminstanzen nicht zu Racebedingungen führen.

Der zugrunde liegende Aufruf des Lesevorgangs des umschlossenen Streams blockiert, bis Eingabedaten verfügbar sind, das Dateiende erkannt wird oder eine Ausnahme ausgelöst wird.

Wenn null ist, werden keine Bytes gelesen und zurückgegeben. Andernfalls wird versucht, mindestens ein Byte zu lesen. Wenn kein Byte verfügbar ist, weil sich der Teilstream am Ende der Datei befindet, wird der Wert zurückgegeben. Andernfalls wird mindestens ein Byte gelesen und in gespeichert.

synchronized void reset()

Positioniert die Position des Teilstroms in den Index, an dem die Methode zuletzt aufgerufen wurde.

Die neue Zurücksetzungsposition im Substream wird erst wirksam, wenn nachfolgende Lesevorgänge durchgeführt werden.

long skip(long n)

Erhöht die aktuelle Position des Teilstroms um . Die -Methode ruft die zugrunde liegende Methode der umschlossenen Streamklasse nicht auf. Das tatsächliche Überspringen von Bytes wird bei nachfolgenden Lesevorgängen für Teilstreams berücksichtigt.

Details zum Konstruktor

SubStream

public SubStream(InputStream source, long startIndex, long streamLength, Object lock)

Erstellt einen neuen Unterstream instance, der den umschlossenen Stream von bis zu partitioniert. Jeder Teilstrom instance, der denselben zugrunde liegenden umschließt, muss den gleichen gegenseitigen Ausschluss aufweisen, um Racebedingungen durch gleichzeitige Vorgänge zu vermeiden.

Parameters:

source - Der markierbare InputStream, der umschlossen werden soll.
startIndex - Ein gültiger Index im umschlossenen Stream, in dem der Teilstream logisch beginnen soll.
streamLength - Die Länge des Teilstroms.
lock - Eine systeminterne Sperre, um threadsichere, gleichzeitige Vorgänge für Substreaminstanzen sicherzustellen, die denselben InputStream umschließen.

Details zur Methode

close

public void close()

Schließt den Teilstrom.

getInputStream

public InputStream getInputStream()

getLength

public long getLength()

mark

public synchronized void mark(int readlimit)

Markiert die aktuelle Position im Teilstream. Bei einem nachfolgenden Aufruf der -Methode wird der Stream an dieser gespeicherten Position neu positioniert.

Parameters:

readlimit - die maximale Anzahl von Bytes, die gelesen werden können, bevor die Markierungsposition ungültig wird.

markSupported

public boolean markSupported()

Die Substream-Wrapperklasse ist nur mit markierbaren Eingabedatenströmen kompatibel und gibt daher immer true zurück. Diese Anforderung wird im Klassenkonstruktor erzwungen.

Returns:

true

read

public int read()

Liest das nächste Byte der Daten aus dem umschlossenen Stream. Das Wertbyte wird als im Bereich von zurückgegeben. Wenn kein Byte verfügbar ist, weil das Ende des Teilstreams erreicht wurde, wird der Wert zurückgegeben. Diese Methode blockiert, bis Eingabedaten verfügbar sind, das Ende des Datenstroms erkannt oder eine Ausnahme ausgelöst wird.

Returns:

das nächste Byte der Daten oder -1 , wenn das Ende des Teilstroms erreicht ist.

Throws:

IOException - , wenn ein E/A-Fehler auftritt.

read

public synchronized int read(byte[] b)

Liest eine bestimmte Anzahl von Bytes aus dem umschlossenen Stream und speichert sie im Pufferarray . Die Anzahl der tatsächlich gelesenen Bytes wird als ganze Zahl zurückgegeben. Diese Methode blockiert, bis Eingabedaten verfügbar sind, das Dateiende erkannt wird oder eine Ausnahme ausgelöst wird.

Wenn die Länge von null ist, werden keine Bytes gelesen und zurückgegeben. Andernfalls wird versucht, mindestens ein Byte zu lesen. Wenn kein Byte verfügbar ist, weil sich der Teilstrom am Ende der Datei befindet, wird der Wert zurückgegeben. Andernfalls wird mindestens ein Byte gelesen und in gespeichert.

Das erste gelesene Byte wird im -Element gespeichert, das nächste in , usw. Die Anzahl der gelesenen Bytes entspricht höchstens der Länge von . Lassen Sie k die Anzahl der tatsächlich gelesenen Bytes sein; Diese Bytes werden in Elementen über k gespeichert, sodass elemente k bis nicht betroffen bleiben.

Die -Methode für die -Klasse hat die gleiche Auswirkung wie:

Parameters:

b - der Puffer, in den die Daten gelesen werden.

Returns:

die Gesamtzahl der bytes, die in den Puffer gelesen werden, oder -1 wenn keine weiteren Daten vorhanden sind, weil das Ende des Datenstroms erreicht wurde.

Throws:

IOException - Wenn das erste Byte aus einem anderen Grund als dem Ende der Datei nicht gelesen werden kann, wenn der umschlossene Stream geschlossen wurde oder ein anderer E/A-Fehler auftritt.
NullPointerException - wenn b gleich null ist.

read

public synchronized int read(byte[] b, int off, int len)

Liest bis zu Bytes von Daten aus dem Teilstream. Puffert Daten aus dem umschlossenen Stream, um den Aufwand für Überspringen und Lesen zu minimieren. Der Wrappedstream wird nur aufgerufen, wenn der readBuffer die Leseanforderung nicht erfüllen kann. Um gültige Ergebnisse sicherzustellen, muss der umschlossene Stream vor dem Lesen aus dem Teilstream markiert werden. Dadurch können wir auf die relative Teilstreamposition im umschlossenen Stream zurücksetzen. Die Anzahl der tatsächlich gelesenen Bytes wird als ganze Zahl zurückgegeben. Alle diese Vorgänge werden synchron innerhalb einer systeminternen Sperre ausgeführt, um sicherzustellen, dass andere gleichzeitige Anforderungen von Substreaminstanzen nicht zu Racebedingungen führen.

Der zugrunde liegende Aufruf des Lesevorgangs des umschlossenen Streams blockiert, bis Eingabedaten verfügbar sind, das Dateiende erkannt wird oder eine Ausnahme ausgelöst wird.

Wenn null ist, werden keine Bytes gelesen und zurückgegeben. Andernfalls wird versucht, mindestens ein Byte zu lesen. Wenn kein Byte verfügbar ist, weil sich der Teilstream am Ende der Datei befindet, wird der Wert zurückgegeben. Andernfalls wird mindestens ein Byte gelesen und in gespeichert.

Parameters:

b - der Puffer, in den die Daten gelesen werden.
off - der Startoffset im Array b , an dem die Daten geschrieben werden.
len - die maximale Anzahl der zu lesenden Bytes.

Returns:

die Gesamtzahl der bytes, die in den Puffer gelesen werden, oder -1 wenn keine weiteren Daten vorhanden sind, weil das Ende des Datenstroms erreicht wurde.

Throws:

IOException - Wenn das erste Byte aus einem anderen Grund als dem Dateiende nicht gelesen werden kann, oder wenn der umschlossene Stream geschlossen wurde oder ein anderer E/A-Fehler auftritt.
NullPointerException - Wenn b gleich null ist.
IndexOutOfBoundsException - Wenn off negativ, len negativ oder len größer als ist b.length - off

reset

public synchronized void reset()

Positioniert die Position des Teilstroms in den Index, an dem die Methode zuletzt aufgerufen wurde.

Die neue Zurücksetzungsposition im Substream wird erst wirksam, wenn nachfolgende Lesevorgänge durchgeführt werden.

skip

public long skip(long n)

Erhöht die aktuelle Position des Teilstroms um . Die -Methode ruft die zugrunde liegende Methode der umschlossenen Streamklasse nicht auf. Das tatsächliche Überspringen von Bytes wird bei nachfolgenden Lesevorgängen für Teilstreams berücksichtigt.

Parameters:

n - die Anzahl der Bytes, die effektiv übersprungen werden sollen.

Returns:

Die tatsächliche Anzahl der übersprungenen Bytes.

Gilt für: