Compartilhar via


InputStream.ReadNBytes Método

Definição

Sobrecargas

ReadNBytes(Int32)

Lê até um número especificado de bytes do fluxo de entrada.

ReadNBytes(Byte[], Int32, Int32)

Lê o número solicitado de bytes do fluxo de entrada para a matriz de bytes fornecida.

ReadNBytes(Int32)

Lê até um número especificado de bytes do fluxo de entrada.

[Android.Runtime.Register("readNBytes", "(I)[B", "GetReadNBytes_IHandler", ApiSince=33)]
public virtual byte[]? ReadNBytes (int len);
[<Android.Runtime.Register("readNBytes", "(I)[B", "GetReadNBytes_IHandler", ApiSince=33)>]
abstract member ReadNBytes : int -> byte[]
override this.ReadNBytes : int -> byte[]

Parâmetros

len
Int32

O número máximo de bytes a serem lidos

Retornos

Byte[]

Uma matriz de bytes que contém os bytes lidos desse fluxo de entrada

Atributos

Comentários

Lê até um número especificado de bytes do fluxo de entrada. Esse método bloqueia até que o número solicitado de bytes tenha sido lido, o fim do fluxo seja detectado ou uma exceção seja lançada. Esse método não fecha o fluxo de entrada.

O comprimento da matriz retornada é igual ao número de bytes lidos do fluxo. Se len for zero, nenhum byte será lido e uma matriz de bytes vazia será retornada. Caso contrário, até len bytes são lidos do fluxo. Menos de bytes podem ser lidos len se o fim do fluxo for encontrado.

Quando esse fluxo atingir o fim do fluxo, outras invocações desse método retornarão uma matriz de bytes vazia.

Observe que esse método destina-se a casos simples em que é conveniente ler o número especificado de bytes em uma matriz de bytes. A quantidade total de memória alocada por esse método é proporcional ao número de bytes lidos do fluxo que é limitado por len. Portanto, o método pode ser chamado com segurança com valores muito grandes de len desde que haja memória suficiente disponível.

O comportamento para o caso em que o fluxo de entrada é fechado de forma assíncrona, ou o thread interrompido durante a leitura, é altamente específico do fluxo de entrada e, portanto, não especificado.

Se ocorrer um erro de E/S lendo a partir do fluxo de entrada, ele poderá fazê-lo depois que alguns, mas não todos, bytes tiverem sido lidos. Consequentemente, o fluxo de entrada pode não estar no final do fluxo e pode estar em um estado inconsistente. É altamente recomendável que o fluxo seja fechado imediatamente se ocorrer um erro de E/S.

Adicionado em 11.

Documentação Java para java.io.InputStream.readNBytes(int).

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

Aplica-se a

ReadNBytes(Byte[], Int32, Int32)

Lê o número solicitado de bytes do fluxo de entrada para a matriz de bytes fornecida.

[Android.Runtime.Register("readNBytes", "([BII)I", "GetReadNBytes_arrayBIIHandler", ApiSince=33)]
public virtual int ReadNBytes (byte[]? b, int off, int len);
[<Android.Runtime.Register("readNBytes", "([BII)I", "GetReadNBytes_arrayBIIHandler", ApiSince=33)>]
abstract member ReadNBytes : byte[] * int * int -> int
override this.ReadNBytes : byte[] * int * int -> int

Parâmetros

b
Byte[]

A matriz de bytes na qual os dados são lidos

off
Int32

o deslocamento inicial no b qual os dados são gravados

len
Int32

O número máximo de bytes a serem lidos

Retornos

O número real de bytes lidos no buffer

Atributos

Comentários

Lê o número solicitado de bytes do fluxo de entrada para a matriz de bytes fornecida. Esse método bloqueia até que len bytes de dados de entrada tenham sido lidos, o fim do fluxo seja detectado ou uma exceção seja lançada. O número de bytes realmente lidos, possivelmente zero, é retornado. Esse método não fecha o fluxo de entrada.

No caso em que o fim do fluxo é atingido antes len que os bytes tenham sido lidos, o número real de bytes lidos será retornado. Quando esse fluxo atingir o fim do fluxo, outras invocações desse método retornarão zero.

Se len for zero, nenhum byte é lido e 0 é retornado, caso contrário, há uma tentativa de ler até len bytes.

O primeiro byte lido é armazenado no elemento b[off], o próximo em , b[off+1]e assim por diante. O número de bytes lidos é, no máximo, igual a len. Seja k o número de bytes realmente lidos, esses bytes serão armazenados em elementos b[off] através de b[off+k, deixando os elementos b[off+k] através de b[off+len-1] inalterados.-1]

O comportamento para o caso em que o fluxo de entrada é fechado de forma assíncrona, ou o thread interrompido durante a leitura, é altamente específico do fluxo de entrada e, portanto, não especificado.

Se ocorrer um erro de E/S lendo o fluxo de entrada, ele poderá fazê-lo depois que alguns, mas não todos, bytes de b foram atualizados com dados do fluxo de entrada. Consequentemente, o fluxo de entrada e b pode estar em um estado inconsistente. É altamente recomendável que o fluxo seja fechado imediatamente se ocorrer um erro de E/S.

Adicionado em 9.

Documentação Java para java.io.InputStream.readNBytes(byte[], int, int).

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

Aplica-se a