Langue

IReadableByteChannel.Read(ByteBuffer) Méthode

Définition

Lit une séquence d’octets de ce canal dans la mémoire tampon donnée.

[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler:Java.Nio.Channels.IReadableByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public int Read(Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler:Java.Nio.Channels.IReadableByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member Read : Java.Nio.ByteBuffer -> int

Paramètres

dst
ByteBuffer

Mémoire tampon dans laquelle les octets doivent être transférés

Retours

Nombre d’octets lus, éventuellement zéro, ou -1 si le canal a atteint la fin du flux

Attributs

Exceptions

si un autre thread ferme le canal pendant la lecture.

si un autre thread interrompt le thread appelant pendant que l’opération est en cours. L’état d’interruption du thread appelant est défini et le canal est fermé.

si le canal est fermé.

Une autre erreur d’E/S se produit, les détails se trouvent dans le message.

si le canal n’a pas été ouvert pour la lecture.

Remarques

Lit une séquence d’octets de ce canal dans la mémoire tampon donnée.

Une tentative est effectuée pour lire jusqu’à r octets à partir du canal, où r correspond au nombre d’octets restants dans la mémoire tampon, autrement dit, dst.remaining()au moment où cette méthode est appelée.

Supposons qu’une séquence d’octets de longueur n soit lue, où 0  ;<=  ; n  ;<=  ; r. Cette séquence d’octets est transférée dans la mémoire tampon afin que le premier octet de la séquence soit à l’index p et que le dernier octet soit à l’index p  ;+  ; n  ;-  ;1, où p est la position de la mémoire tampon au moment où cette méthode est appelée. Lors du retour, la position de la mémoire tampon est égale à p  ;+  ; n ; sa limite n’aura pas changé.

Une opération de lecture peut ne pas remplir la mémoire tampon et, en fait, elle peut ne pas lire d’octets du tout. Si elle le fait ou non dépend de la nature et de l’état du canal. Un canal de socket en mode non bloquant, par exemple, ne peut pas lire plus d’octets que ce qui est immédiatement disponible à partir de la mémoire tampon d’entrée du socket ; de même, un canal de fichier ne peut pas lire plus d’octets que de rester dans le fichier. Toutefois, il est garanti que si un canal est en mode bloquant et qu’il y a au moins un octet restant dans la mémoire tampon, cette méthode bloque jusqu’à ce qu’au moins un octet soit lu.

Cette méthode peut être appelée à tout moment. Si un autre thread a déjà lancé une opération de lecture sur ce canal, toutefois, un appel de cette méthode se bloque jusqu’à ce que la première opération soit terminée.

Documentation Java pour java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à