Linguaggio

CharsetDecoder.Decode Metodo

Definizione

Overload

Nome Descrizione
Decode(ByteBuffer)

Metodo pratico che decodifica il contenuto rimanente di un singolo buffer di byte di input in un buffer di caratteri appena allocato.

Decode(ByteBuffer, CharBuffer, Boolean)

Decodifica il maggior numero possibile di byte dal buffer di input specificato, scrivendo i risultati nel buffer di output specificato.

Decode(ByteBuffer)

Metodo pratico che decodifica il contenuto rimanente di un singolo buffer di byte di input in un buffer di caratteri appena allocato.

[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

Parametri

in
ByteBuffer

Buffer dei byte di input

Valori restituiti

Buffer di caratteri appena allocato contenente il risultato dell'operazione di decodifica. La posizione del buffer sarà zero e il limite seguirà l'ultimo carattere scritto.

Attributi

Eccezioni

se è in corso un'altra operazione di decodifica.

se è stata rilevata una sequenza di byte di input non valida per questo set di caratteri e l'azione per l'errore in formato non valido è Report

se è stata rilevata una sequenza di byte di input legale ma non valida per questo set di caratteri e l'azione per l'errore di carattere non applicabile è Report. Unmappable indica che la sequenza di byte nella posizione corrente del buffer di input non può essere mappata a una sequenza di caratteri Unicode.

se si è verificata un'altra eccezione durante l'operazione di decodifica.

Commenti

Metodo pratico che decodifica il contenuto rimanente di un singolo buffer di byte di input in un buffer di caratteri appena allocato.

Questo metodo implementa un'intera operazione di decodifica; ovvero reimposta questo decodificatore, quindi decodifica i byte nel buffer di byte specificato e infine scarica questo decodificatore. Questo metodo non deve pertanto essere richiamato se è già in corso un'operazione di decodifica.

per java.nio.charset.CharsetDecoder.decode(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

Decode(ByteBuffer, CharBuffer, Boolean)

Decodifica il maggior numero possibile di byte dal buffer di input specificato, scrivendo i risultati nel buffer di output specificato.

[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

Parametri

in
ByteBuffer

Buffer dei byte di input

out
CharBuffer

Buffer dei caratteri di output

endOfInput
Boolean

true se e solo se, l'invoker non può fornire byte di input aggiuntivi oltre quelli nel buffer specificato

Valori restituiti

Oggetto coder-result che descrive il motivo della terminazione

Attributi

Eccezioni

se la decodifica è stata avviata o non sono necessari altri input in questo stato di decodifica.

se il DecodeLoop(ByteBuffer, CharBuffer) metodo ha generato un BufferUnderflowException oggetto o BufferOverflowException.

Commenti

Decodifica il maggior numero possibile di byte dal buffer di input specificato, scrivendo i risultati nel buffer di output specificato.

I buffer vengono letti e scritti in, a partire dalle posizioni correnti. Buffer#remaining in.remaining() Al massimo i byte verranno letti e al massimo Buffer#remaining out.remaining() verranno scritti caratteri. Le posizioni dei buffer saranno avanzate per riflettere i byte letti e i caratteri scritti, ma i relativi contrassegni e limiti non verranno modificati.

Oltre a leggere i byte dal buffer di input e scrivere caratteri nel buffer di output, questo metodo restituisce un CoderResult oggetto per descrivere il motivo della terminazione:

<ul>

<li>

CoderResult#UNDERFLOW indica che la maggior parte del buffer di input possibile è stata decodificata. Se non è presente alcun ulteriore input, il invoker può procedere con il passaggio successivo dell'operazione di decodifica. In caso contrario, questo metodo deve essere richiamato nuovamente con ulteriore input.

</li>

<li>

CoderResult#OVERFLOW indica che lo spazio nel buffer di output non è sufficiente per decodificare altri byte. Questo metodo deve essere richiamato nuovamente con un buffer di output con più caratteri rimanenti buffer#rimanenti. Questa operazione viene in genere eseguita svuotando tutti i caratteri decodificati dal buffer di output.

</li>

<li>

Un risultato di coderResult#malformedForLength indica che è stato rilevato un errore di input in formato non valido. I byte in formato non valido iniziano nella posizione del buffer di input (possibilmente incrementata); Il numero di byte in formato non valido può essere determinato richiamando il metodo dell'oggetto CoderResult#length() length risultato. Questo caso si applica solo se l'azione #onMalformedInput in formato non valido di questo decodificatore è CodingErrorAction#REPORT; in caso contrario, l'input in formato non valido verrà ignorato o sostituito, come richiesto.

</li>

<li>

Un risultato coderResult#unmappableForLength unmappable-character result indica che è stato rilevato un errore di carattere non associabile. I byte che decodificano il carattere non utilizzabile iniziano in corrispondenza della posizione del buffer di input (possibilmente incrementata); il numero di tali byte può essere determinato richiamando il metodo dell'oggetto CoderResult#length() length risultato. Questo caso si applica solo se l'azione #onUnmappableCharacter non modificabile di questo decodificatore è CodingErrorAction#REPORT; in caso contrario, il carattere non modificabile verrà ignorato o sostituito, come richiesto.

</li>

</ul>

In ogni caso, se questo metodo deve essere reintegrato nella stessa operazione di decodifica, è necessario prestare attenzione a mantenere tutti i byte rimanenti nel buffer di input in modo che siano disponibili per la chiamata successiva.

Il endOfInput parametro consiglia a questo metodo se l'invoker può fornire ulteriore input oltre a quello contenuto nel buffer di input specificato. Se esiste una possibilità di fornire input aggiuntivo, il invoker deve passare false per questo parametro; se non esiste alcuna possibilità di fornire ulteriore input, il invoker deve passare true. Non è errato, e di fatto è piuttosto comune, passare false una chiamata e poi scoprire che nessun altro input era effettivamente disponibile. È tuttavia fondamentale che la chiamata finale di questo metodo in una sequenza di chiamate passi true sempre in modo che qualsiasi input non dichiarato rimanente venga considerato in formato non corretto.

Questo metodo funziona richiamando il metodo, interpretandone i #decodeLoop decodeLoop risultati, gestendo le condizioni di errore e richiamandolo in base alle esigenze.

per java.nio.charset.CharsetDecoder.decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean).

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