IReadableByteChannel.Read(ByteBuffer) Método

Definição

Lê uma sequência de bytes desse canal no buffer fornecido.

[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

O buffer para o qual os bytes devem ser transferidos

Retornos

O número de bytes lidos, possivelmente zero ou -1 se o canal atingiu o fim do fluxo

Atributos

Exceções

se outro thread fechar o canal durante a leitura.

se outro thread interromper o thread de chamada enquanto a operação estiver em andamento. O estado de interrupção do thread de chamada é definido e o canal é fechado.

se o canal estiver fechado.

outro erro de E/S ocorre, os detalhes estão na mensagem.

se o canal não foi aberto para leitura.

Comentários

Lê uma sequência de bytes desse canal no buffer fornecido.

É feita uma tentativa de ler até r bytes do canal, em que r é o número de bytes restantes no buffer, ou seja, dst.remaining()no momento em que esse método é invocado.

Suponha que uma sequência de bytes de comprimento n seja lida, em 0que  <=  n <=  r. Essa sequência de bytes será transferida para o buffer para que o primeiro byte na sequência esteja no índice p e o último byte esteja no índice p +  n - , em que1p é a posição do buffer no momento em que esse método é invocado. Ao retornar, a posição do buffer será igual a p +  n; seu limite não terá sido alterado.

Uma operação de leitura pode não preencher o buffer e, na verdade, pode não ler nenhum bytes. Se isso depende ou não da natureza e do estado do canal. Um canal de soquete no modo de não bloqueio, por exemplo, não pode ler mais bytes do que está disponível imediatamente no buffer de entrada do soquete; da mesma forma, um canal de arquivo não pode ler mais bytes do que permanecer no arquivo. No entanto, é garantido que, se um canal estiver no modo de bloqueio e houver pelo menos um byte restante no buffer, esse método será bloqueado até que pelo menos um byte seja lido.

Esse método pode ser invocado a qualquer momento. No entanto, se outro thread já tiver iniciado uma operação de leitura nesse canal, uma invocação desse método será bloqueada até que a primeira operação seja concluída.

Java documentação para java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a