Partager via


SubStream Classe

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

public class SubStream

Récapitulatif du constructeur

Constructeur Description
SubStream(InputStream source, long startIndex, long streamLength, Object lock)

Crée un sous-flux instance qui partitionne le flux encapsulé de jusqu’à . Chaque sous-flux instance qui encapsule le même sous-jacent doit partager la même exclusion mutuelle pour éviter les conditions de concurrence des opérations simultanées.

Résumé de la méthode

Modificateur et type Méthode et description
void close()

Ferme le sous-flux.

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

Marque la position actuelle dans le sous-flux. Un appel suivant à la méthode repositionnera le flux vers cette position stockée.

boolean markSupported()

La classe wrapper de sous-flux n’est compatible qu’avec les flux d’entrée pouvant être marqués et retourne donc toujours true. Cette exigence est appliquée dans le constructeur de classe.

int read()

Lit l’octet suivant des données à partir du flux encapsulé. L’octet de valeur est retourné sous la forme d’un dans la plage à . Si aucun octet n’est disponible car la fin du sous-flux a été atteinte, la valeur est retournée. Cette méthode bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du flux soit détectée ou qu’une exception soit levée.

synchronized int read(byte[] b)

Lit un certain nombre d’octets du flux encapsulé et les stocke dans le tableau de mémoires tampons . Le nombre d’octets effectivement lus est retourné sous forme d’entier. Cette méthode bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du fichier soit détectée ou qu’une exception soit levée.

Si la longueur de est égale à zéro, aucun octet n’est lu et retourné ; sinon, il y a une tentative de lecture d’au moins un octet. Si aucun octet n’est disponible, car le sous-flux se trouve à la fin du fichier, la valeur est retournée ; sinon, au moins un octet est lu et stocké dans .

La première lecture d’octet est stockée dans l’élément , la suivante dans , et ainsi de suite. Le nombre d’octets lus est, au plus, égal à la longueur de . Soit k le nombre d’octets effectivement lus ; ces octets seront stockés dans des éléments via k, laissant les éléments k à non affectés.

La méthode pour la classe a le même effet que :

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

Lit jusqu’à des octets de données à partir du sous-flux. Met en mémoire tampon les données du flux encapsulé afin de réduire la surcharge d’saut et de lecture. Le wrappedstream est appelé uniquement si readBuffer ne peut pas répondre à la demande de lecture. Pour garantir des résultats valides, le flux encapsulé doit être marqué avant la lecture à partir du sous-flux. Cela nous permet de rétablir la position relative du sous-flux dans le flux encapsulé. Le nombre d’octets réellement lus est retourné sous la forme d’un entier. Toutes ces opérations sont effectuées de manière synchrone dans un verrou intrinsèque pour garantir que d’autres demandes simultanées par les instances de sous-flux n’entraînent pas de conditions de concurrence.

L’appel sous-jacent à la lecture du flux encapsulé se bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du fichier soit détectée ou qu’une exception soit levée.

Si est égal à zéro, aucun octet n’est lu et est retourné ; dans le cas contraire, il y a une tentative de lecture d’au moins un octet. Si aucun octet n’est disponible, car le sous-flux se trouve à la fin du fichier, la valeur est retournée ; sinon, au moins un octet est lu et stocké dans .

synchronized void reset()

Repositionne la position de sous-flux sur l’index où la méthode a été appelée pour la dernière fois.

La nouvelle position de réinitialisation sur le sous-flux n’entre pas en vigueur avant les lectures suivantes.

long skip(long n)

Avance la position actuelle du sous-flux de . La méthode n’appelle pas la méthode sous-jacente de la classe de flux encapsulée. Le saut réel d’octets sera pris en compte lors des opérations de lecture de sous-flux suivantes.

Détails du constructeur

SubStream

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

Crée un sous-flux instance qui partitionne le flux encapsulé de jusqu’à . Chaque sous-flux instance qui encapsule le même sous-jacent doit partager la même exclusion mutuelle pour éviter les conditions de concurrence des opérations simultanées.

Parameters:

source - InputStream markable à encapsuler.
startIndex - Index valide dans le flux encapsulé où le sous-flux doit logiquement commencer.
streamLength - Longueur du sous-flux.
lock - Verrou intrinsèque pour garantir des opérations simultanées et sécurisées sur les instances de sous-flux qui encapsulent le même InputStream.

Détails de la méthode

close

public void close()

Ferme le sous-flux.

getInputStream

public InputStream getInputStream()

getLength

public long getLength()

mark

public synchronized void mark(int readlimit)

Marque la position actuelle dans le sous-flux. Un appel suivant à la méthode repositionnera le flux vers cette position stockée.

Parameters:

readlimit - limite maximale d’octets pouvant être lus avant que la position de marque ne devienne non valide.

markSupported

public boolean markSupported()

La classe wrapper de sous-flux n’est compatible qu’avec les flux d’entrée pouvant être marqués et retourne donc toujours true. Cette exigence est appliquée dans le constructeur de classe.

Returns:

true

read

public int read()

Lit l’octet suivant des données à partir du flux encapsulé. L’octet de valeur est retourné sous la forme d’un dans la plage à . Si aucun octet n’est disponible car la fin du sous-flux a été atteinte, la valeur est retournée. Cette méthode bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du flux soit détectée ou qu’une exception soit levée.

Returns:

l’octet suivant des données ou -1 si la fin du sous-flux est atteinte.

Throws:

IOException - si une erreur d’E/S se produit.

read

public synchronized int read(byte[] b)

Lit un certain nombre d’octets du flux encapsulé et les stocke dans le tableau de mémoires tampons . Le nombre d’octets effectivement lus est retourné sous forme d’entier. Cette méthode bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du fichier soit détectée ou qu’une exception soit levée.

Si la longueur de est égale à zéro, aucun octet n’est lu et retourné ; sinon, il y a une tentative de lecture d’au moins un octet. Si aucun octet n’est disponible, car le sous-flux se trouve à la fin du fichier, la valeur est retournée ; sinon, au moins un octet est lu et stocké dans .

La première lecture d’octet est stockée dans l’élément , la suivante dans , et ainsi de suite. Le nombre d’octets lus est, au plus, égal à la longueur de . Soit k le nombre d’octets effectivement lus ; ces octets seront stockés dans des éléments via k, laissant les éléments k à non affectés.

La méthode pour la classe a le même effet que :

Parameters:

b - mémoire tampon dans laquelle les données sont lues.

Returns:

nombre total d’octets lus dans la mémoire tampon ou -1 s’il n’y a plus de données, car la fin du flux a été atteinte.

Throws:

IOException - Si le premier octet ne peut pas être lu pour une raison autre que la fin du fichier, si le flux encapsulé a été fermé ou si une autre erreur d’E/S se produit.
NullPointerException - si b a la valeur null.

read

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

Lit jusqu’à des octets de données à partir du sous-flux. Met en mémoire tampon les données du flux encapsulé afin de réduire la surcharge d’saut et de lecture. Le wrappedstream est appelé uniquement si readBuffer ne peut pas répondre à la demande de lecture. Pour garantir des résultats valides, le flux encapsulé doit être marqué avant la lecture à partir du sous-flux. Cela nous permet de rétablir la position relative du sous-flux dans le flux encapsulé. Le nombre d’octets réellement lus est retourné sous la forme d’un entier. Toutes ces opérations sont effectuées de manière synchrone dans un verrou intrinsèque pour garantir que d’autres demandes simultanées par les instances de sous-flux n’entraînent pas de conditions de concurrence.

L’appel sous-jacent à la lecture du flux encapsulé se bloque jusqu’à ce que les données d’entrée soient disponibles, que la fin du fichier soit détectée ou qu’une exception soit levée.

Si est égal à zéro, aucun octet n’est lu et est retourné ; dans le cas contraire, il y a une tentative de lecture d’au moins un octet. Si aucun octet n’est disponible, car le sous-flux se trouve à la fin du fichier, la valeur est retournée ; sinon, au moins un octet est lu et stocké dans .

Parameters:

b - mémoire tampon dans laquelle les données sont lues.
off - décalage de début dans le tableau b au niveau duquel les données sont écrites.
len - nombre maximal d’octets à lire.

Returns:

nombre total d’octets lus dans la mémoire tampon, ou -1 s’il n’y a plus de données, car la fin du flux a été atteinte.

Throws:

IOException - Si le premier octet ne peut pas être lu pour une raison autre que la fin du fichier, ou si le flux encapsulé a été fermé, ou si une autre erreur d’E/S se produit.
NullPointerException - Si b est null.
IndexOutOfBoundsException - Si off est négatif, len est négatif ou len est supérieur à b.length - off

reset

public synchronized void reset()

Repositionne la position de sous-flux sur l’index où la méthode a été appelée pour la dernière fois.

La nouvelle position de réinitialisation sur le sous-flux n’entre pas en vigueur avant les lectures suivantes.

skip

public long skip(long n)

Avance la position actuelle du sous-flux de . La méthode n’appelle pas la méthode sous-jacente de la classe de flux encapsulée. Le saut réel d’octets sera pris en compte lors des opérations de lecture de sous-flux suivantes.

Parameters:

n - nombre d’octets à ignorer.

Returns:

nombre réel d’octets ignorés.

S’applique à