IReadableByteChannel.Read(ByteBuffer) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee una secuencia de bytes de este canal en el búfer especificado.
[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
Parámetros
- dst
- ByteBuffer
Búfer en el que se van a transferir bytes
Devoluciones
El número de bytes leídos, posiblemente cero, o -1 si el canal ha llegado al final de la secuencia
- Atributos
Excepciones
si otro subproceso cierra el canal durante la lectura.
si otro subproceso interrumpe el subproceso que realiza la llamada mientras la operación está en curso. El estado de interrupción del subproceso de llamada se establece y se cierra el canal.
si el canal está cerrado.
se produce otro error de E/S, los detalles se encuentran en el mensaje.
si el canal no se abrió para leerlo.
Comentarios
Lee una secuencia de bytes de este canal en el búfer especificado.
Se intenta leer hasta bytes r del canal, donde r es el número de bytes restantes en el búfer, es decir, dst.remaining(), en el momento en que se invoca este método.
Supongamos que se lee una secuencia de bytes de longitud n , donde 0 <= n <= r. Esta secuencia de bytes se transferirá al búfer para que el primer byte de la secuencia esté en el índice p y el último byte se encuentra en el índice p + n - 1, donde p es la posición del búfer en el momento en que se invoca este método. Al devolver la posición del búfer será igual a p + n; su límite no cambiará.
Es posible que una operación de lectura no rellene el búfer y, de hecho, no lea ningún bytes en absoluto. Si lo hace o no depende de la naturaleza y el estado del canal. Un canal de socket en modo sin bloqueo, por ejemplo, no puede leer más bytes de los que están disponibles inmediatamente desde el búfer de entrada del socket; de forma similar, un canal de archivo no puede leer más bytes de los que permanecen en el archivo. Sin embargo, se garantiza que si un canal está en modo de bloqueo y hay al menos un byte restante en el búfer, este método se bloqueará hasta que se lea al menos un byte.
Este método se puede invocar en cualquier momento. Sin embargo, si otro subproceso ya ha iniciado una operación de lectura en este canal, se bloqueará una invocación de este método hasta que se complete la primera operación.
Java documentación para java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.