Idioma

CharsetDecoder.Decode Método

Definição

Sobrecargas

Nome Description
Decode(ByteBuffer)

Método de conveniência que decodifica o conteúdo restante de um único buffer de bytes de entrada em um buffer de caracteres recém-alocado.

Decode(ByteBuffer, CharBuffer, Boolean)

Decodifica o máximo de bytes possível do buffer de entrada fornecido, gravando os resultados no buffer de saída fornecido.

Decode(ByteBuffer)

Método de conveniência que decodifica o conteúdo restante de um único buffer de bytes de entrada em um buffer de caracteres recém-alocado.

[Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;", "")]
public Java.Nio.CharBuffer? Decode(Java.Nio.ByteBuffer? in);
[<Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;", "")>]
member this.Decode : Java.Nio.ByteBuffer -> Java.Nio.CharBuffer

Parâmetros

in
ByteBuffer

O buffer de bytes de entrada

Retornos

Um buffer de caractere recém-alocado que contém o resultado da operação de decodificação. A posição do buffer será zero e seu limite seguirá o último caractere gravado.

Atributos

Exceções

se outra operação de decodificação estiver em andamento.

se uma sequência de bytes de entrada ilegal para esse conjunto de caracteres foi encontrada e a ação para erro malformado é Report

se uma sequência de bytes de entrada legal, mas inaplicaível para esse conjunto de caracteres foi encontrada, e a ação para erro de caractere inaplicaível é Report. Inaplicativo significa que a sequência de bytes na posição atual do buffer de entrada não pode ser mapeada para uma sequência de caracteres Unicode.

se outra exceção ocorreu durante a operação de decodificação.

Comentários

Método de conveniência que decodifica o conteúdo restante de um único buffer de bytes de entrada em um buffer de caracteres recém-alocado.

Esse método implementa uma operação de decodificação inteira; ou seja, ele redefine esse decodificador, depois decodifica os bytes no buffer de bytes fornecido e, por fim, libera esse decodificador. Portanto, esse método não deverá ser invocado se uma operação de decodificação já estiver em andamento.

Documentação Java para java.nio.charset.CharsetDecoder.decode(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

Decode(ByteBuffer, CharBuffer, Boolean)

Decodifica o máximo de bytes possível do buffer de entrada fornecido, gravando os resultados no buffer de saída fornecido.

[Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;", "")]
public Java.Nio.Charset.CoderResult? Decode(Java.Nio.ByteBuffer? in, Java.Nio.CharBuffer? out, bool endOfInput);
[<Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;", "")>]
member this.Decode : Java.Nio.ByteBuffer * Java.Nio.CharBuffer * bool -> Java.Nio.Charset.CoderResult

Parâmetros

in
ByteBuffer

O buffer de bytes de entrada

out
CharBuffer

O buffer de caracteres de saída

endOfInput
Boolean

true se, e somente se, o invocador não puder fornecer bytes de entrada adicionais além daqueles no buffer fornecido

Retornos

Um objeto de resultado do codificador que descreve o motivo do encerramento

Atributos

Exceções

se a decodificação tiver sido iniciada ou nenhuma outra entrada for necessária nesse progresso de decodificação.

se o DecodeLoop(ByteBuffer, CharBuffer) método jogou um BufferUnderflowException ou BufferOverflowException.

Comentários

Decodifica o máximo de bytes possível do buffer de entrada fornecido, gravando os resultados no buffer de saída fornecido.

Os buffers são lidos e gravados em suas posições atuais. No máximo Buffer#remaining in.remaining() , os bytes serão lidos e, no máximo Buffer#remaining out.remaining() , os caracteres serão escritos. As posições dos buffers serão avançadas para refletir os bytes lidos e os caracteres gravados, mas suas marcas e limites não serão modificados.

Além de ler bytes do buffer de entrada e gravar caracteres no buffer de saída, esse método retorna um CoderResult objeto para descrever seu motivo de término:

<ul>

<li>

CoderResult#UNDERFLOW indica que o máximo possível do buffer de entrada foi decodificado. Se não houver nenhuma entrada adicional, o invocador poderá prosseguir para a próxima etapa da operação de decodificação. Caso contrário, esse método deve ser invocado novamente com entrada adicional.

</li>

<li>

CoderResult#OVERFLOW indica que não há espaço suficiente no buffer de saída para decodificar mais bytes. Esse método deve ser invocado novamente com um buffer de saída que tenha mais caracteres restantes do Buffer#. Isso normalmente é feito drenando todos os caracteres decodificados do buffer de saída.

</li>

<li>

Um resultado de entrada malformedForLength de CoderResult#malformed indica que um erro de entrada malformada foi detectado. Os bytes malformados começam na posição do buffer de entrada (possivelmente incrementado) ; o número de bytes malformados pode ser determinado invocando o método do objeto de CoderResult#length() length resultado. Esse caso só se aplica se o #onMalformedInput ação malformada desse decodificador for CodingErrorAction#REPORT; caso contrário, a entrada malformada será ignorada ou substituída, conforme solicitado.

</li>

<li>

Um resultado coderResult#unmappableForLength unmappable-character indica que um erro de caractere inaplicaível foi detectado. Os bytes que decodificam o caractere inaplicaível começam na posição do buffer de entrada (possivelmente incrementado) ; o número de bytes desse tipo pode ser determinado invocando o método do objeto de CoderResult#length() length resultado. Esse caso só se aplica se o #onUnmappableCharacter ação inaplicaível desse decodificador for CodingErrorAction#REPORT; caso contrário, o caractere inaplicaível será ignorado ou substituído, conforme solicitado.

</li>

</ul>

De qualquer forma, se esse método deve ser reenvoado na mesma operação de decodificação, deve-se tomar cuidado para preservar todos os bytes restantes no buffer de entrada para que eles estejam disponíveis para a próxima invocação.

O endOfInput parâmetro aconselha esse método sobre se o invocador pode fornecer mais entradas além daquela contida no buffer de entrada fornecido. Se houver a possibilidade de fornecer entrada adicional, o invocador deverá passar false para esse parâmetro; se não houver nenhuma possibilidade de fornecer mais entradas, o invocador deverá passar true. Não é incorreto e, na verdade, é bastante comum passar false uma invocação e depois descobrir que nenhuma entrada adicional estava realmente disponível. No entanto, é fundamental que a invocação final desse método em uma sequência de invocações sempre passe true para que qualquer entrada não codificada restante seja tratada como malformada.

Esse método funciona invocando o #decodeLoop decodeLoop método, interpretando seus resultados, tratando condições de erro e invocando-o novamente conforme necessário.

Documentação Java para java.nio.charset.CharsetDecoder.decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean).

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