Lingua

IReadableByteChannel.Read(ByteBuffer) Metodo

Definizione

Legge una sequenza di byte da questo canale nel buffer specificato.

[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

Parametri

dst
ByteBuffer

Buffer in cui devono essere trasferiti i byte

Valori restituiti

Numero di byte letti, possibilmente zero o -1 se il canale ha raggiunto la fine del flusso

Attributi

Eccezioni

se un altro thread chiude il canale durante la lettura.

se un altro thread interrompe il thread chiamante mentre l'operazione è in corso. Lo stato di interrupt del thread chiamante è impostato e il canale viene chiuso.

se il canale è chiuso.

si verifica un altro errore di I/O, i dettagli si trovano nel messaggio.

se il canale non è stato aperto per la lettura.

Commenti

Legge una sequenza di byte da questo canale nel buffer specificato.

Viene effettuato un tentativo di lettura fino a r byte dal canale, dove r è il numero di byte rimanenti nel buffer, ovvero , dst.remaining()al momento in cui questo metodo viene richiamato.

Si supponga che venga letta una sequenza di byte di lunghezza n , dove 0 <=  n <=  r. Questa sequenza di byte verrà trasferita nel buffer in modo che il primo byte nella sequenza sia in corrispondenza dell'indice p e l'ultimo byte sia in corrispondenza dell'indice p +  n - 1, dove p è la posizione del buffer al momento in cui viene richiamato questo metodo. Al momento della restituzione della posizione del buffer sarà uguale a p +  n; il limite non verrà modificato.

Un'operazione di lettura potrebbe non riempire il buffer e, di fatto, potrebbe non leggere alcun byte. Indipendentemente dal fatto che lo faccia dipende dalla natura e dallo stato del canale. Un canale socket in modalità non di blocco, ad esempio, non può leggere più byte di quanto siano immediatamente disponibili dal buffer di input del socket; analogamente, un canale di file non può leggere più byte di quanto rimanga nel file. È garantito, tuttavia, che se un canale è in modalità di blocco ed è presente almeno un byte rimanente nel buffer, questo metodo verrà bloccato fino a quando non viene letto almeno un byte.

Questo metodo può essere richiamato in qualsiasi momento. Se un altro thread ha già avviato un'operazione di lettura su questo canale, tuttavia, una chiamata di questo metodo verrà bloccata fino al completamento della prima operazione.

per java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a