Lenguaje

CharsetDecoder.Decode Método

Definición

Sobrecargas

Nombre Description
Decode(ByteBuffer)

Método de conveniencia que descodifica el contenido restante de un único búfer de bytes de entrada en un búfer de caracteres recién asignado.

Decode(ByteBuffer, CharBuffer, Boolean)

Descodifica tantos bytes como sea posible desde el búfer de entrada especificado, escribiendo los resultados en el búfer de salida especificado.

Decode(ByteBuffer)

Método de conveniencia que descodifica el contenido restante de un único búfer de bytes de entrada en un búfer de caracteres recién asignado.

[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

Búfer de bytes de entrada

Devoluciones

Búfer de caracteres recién asignado que contiene el resultado de la operación de descodificación. La posición del búfer será cero y su límite seguirá el último carácter escrito.

Atributos

Excepciones

si otra operación de descodificación está en curso.

si se encontró una secuencia de bytes de entrada no válida para este conjunto de caracteres y la acción para el error con formato incorrecto es Report

si se encontró una secuencia de bytes de entrada legal pero no aplicable para este conjunto de caracteres, y la acción para un error de carácter no aplicable es Report. Unmappable significa que la secuencia de bytes en la posición actual del búfer de entrada no se puede asignar a una secuencia de caracteres Unicode.

si se produjo otra excepción durante la operación de descodificación.

Comentarios

Método de conveniencia que descodifica el contenido restante de un único búfer de bytes de entrada en un búfer de caracteres recién asignado.

Este método implementa una operación de descodificación completa; es decir, restablece este descodificador, descodifica los bytes en el búfer de bytes especificado y, por último, vacía este descodificador. Por lo tanto, este método no debe invocarse si ya hay una operación de descodificación en curso.

Java documentación para java.nio.charset.CharsetDecoder.decode(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.

Se aplica a

Decode(ByteBuffer, CharBuffer, Boolean)

Descodifica tantos bytes como sea posible desde el búfer de entrada especificado, escribiendo los resultados en el búfer de salida especificado.

[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

Búfer de bytes de entrada

out
CharBuffer

Búfer de caracteres de salida

endOfInput
Boolean

true si, y solo si, el invocador no puede proporcionar bytes de entrada adicionales más allá de los del búfer especificado.

Devoluciones

Objeto coder-result que describe el motivo de la terminación

Atributos

Excepciones

si la descodificación se ha iniciado o no se necesita más entradas en este progreso de descodificación.

si el DecodeLoop(ByteBuffer, CharBuffer) método produjo o BufferUnderflowExceptionBufferOverflowException.

Comentarios

Descodifica tantos bytes como sea posible desde el búfer de entrada especificado, escribiendo los resultados en el búfer de salida especificado.

Los búferes se leen y se escriben en, empezando por sus posiciones actuales. Como máximo Buffer#remaining in.remaining() , se leerán los bytes y se escribirán como máximo Buffer#remaining out.remaining() caracteres. Las posiciones de los búferes se avanzarán para reflejar los bytes leídos y los caracteres escritos, pero sus marcas y límites no se modificarán.

Además de leer bytes del búfer de entrada y escribir caracteres en el búfer de salida, este método devuelve un CoderResult objeto para describir su motivo de finalización:

<ul>

<li>

CoderResult#UNDERFLOW indica que se ha descodificado tanto como sea posible el búfer de entrada. Si no hay ninguna entrada adicional, el invocador puede continuar con el paso siguiente de la operación de descodificación. De lo contrario, se debe invocar de nuevo este método con una entrada adicional.

</li>

<li>

CoderResult#OVERFLOW indica que no hay espacio suficiente en el búfer de salida para descodificar más bytes. Este método debe invocarse de nuevo con un búfer de salida que tenga más caracteres restantes de Buffer#. Normalmente, esto se hace purgando los caracteres descodificados del búfer de salida.

</li>

<li>

Un resultado de entrada con formato incorrecto CoderResult#malformedForLength indica que se ha detectado un error de entrada con formato incorrecto. Los bytes con formato incorrecto comienzan en la posición del búfer de entrada (posiblemente incrementado); El número de bytes con formato incorrecto puede determinarse invocando el método del objeto de CoderResult#length() length resultado. Este caso solo se aplica si el #onMalformedInput acción con formato incorrecto de este descodificador es CodingErrorAction#REPORT; de lo contrario, la entrada con formato incorrecto se omitirá o reemplazará, según se solicite.

</li>

<li>

Un resultado de CoderResult#unmappableForLength unmappable-character indica que se ha detectado un error de carácter no aplicable. Los bytes que descodifican el carácter no aplicable comienzan en la posición (posiblemente incrementada) del búfer de entrada; el número de dichos bytes se puede determinar invocando el método del objeto de CoderResult#length() length resultado. Este caso solo se aplica si el #onUnmappableCharacter acción inaplicable de este descodificador es CodingErrorAction#REPORT; de lo contrario, se omitirá o reemplazará el carácter no aplicable, según se solicite.

</li>

</ul>

En cualquier caso, si este método se va a volver a invocar en la misma operación de descodificación, se debe tener cuidado para conservar los bytes restantes en el búfer de entrada para que estén disponibles para la siguiente invocación.

El endOfInput parámetro aconseja a este método si el invocador puede proporcionar una entrada adicional más allá de la contenida en el búfer de entrada especificado. Si existe la posibilidad de proporcionar una entrada adicional, el invocador debe pasar para este parámetro; si no hay ninguna posibilidad de proporcionar más entrada, el invocador debe pasar falsetrue. No es erróneo y, de hecho, es bastante común pasar false una invocación y más adelante descubrir que ninguna entrada adicional estaba realmente disponible. Sin embargo, es fundamental que la invocación final de este método en una secuencia de invocaciones pase siempre true para que cualquier entrada no codificada restante se trate como con formato incorrecto.

Este método funciona invocando el #decodeLoop decodeLoop método , interpretando sus resultados, controlando las condiciones de error y invocando de nuevo según sea necesario.

Java documentación para java.nio.charset.CharsetDecoder.decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean).

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.

Se aplica a