Compartilhar via


IDataInput.ReadUTF Método

Definição

Lê em uma cadeia de caracteres que foi codificada usando um formato UTF-8 modificado.

[Android.Runtime.Register("readUTF", "()Ljava/lang/String;", "GetReadUTFHandler:Java.IO.IDataInputInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public string? ReadUTF ();
[<Android.Runtime.Register("readUTF", "()Ljava/lang/String;", "GetReadUTFHandler:Java.IO.IDataInputInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member ReadUTF : unit -> string

Retornos

uma cadeia de caracteres Unicode.

Atributos

Exceções

se o final da entrada for atingido antes que a solicitação de leitura possa ser atendida.

se ocorrer um erro de E/S durante a leitura.

Comentários

Lê em uma cadeia de caracteres que foi codificada usando um formato UTF-8 modificado. O contrato geral de readUTF é que ele lê uma representação de uma cadeia de caracteres Unicode codificada no formato UTF-8 modificado, essa cadeia de caracteres é então retornada como um Stringarquivo .

Primeiro, dois bytes são lidos readUnsignedShort e usados para construir um inteiro de 16 bits não assinado exatamente da maneira do método. Esse valor inteiro é chamado de comprimento UTF e especifica o número de bytes adicionais a serem lidos. Esses bytes são então convertidos em caracteres considerando-os em grupos. O comprimento de cada grupo é calculado a partir do valor do primeiro byte do grupo. O byte seguinte a um grupo, se houver, é o primeiro byte do próximo grupo.

Se o primeiro byte de um grupo corresponder ao padrão 0xxxxxxx de bits (onde x significa "pode ser 0 ou 1"), então o grupo consiste apenas nesse byte. O byte é estendido a zero para formar um caractere.

Se o primeiro byte de um grupo corresponder ao padrão 110xxxxxde bits, o grupo consistirá nesse byte a e em um segundo byte b. Se não houver nenhum byte b (porque byte a foi o último dos bytes a ser lido), ou se b byte não corresponder ao padrão 10xxxxxxde bits, então um UTFDataFormatException é lançado. Caso contrário, o grupo será convertido no caractere:

{@code (char)(((a & 0x1F) << 6) | (b & 0x3F))
            }

Se o primeiro byte de um grupo corresponder ao padrão 1110xxxxde bits, o grupo consistirá nesse byte a e mais dois bytes b e c. Se não houver nenhum byte c (porque byte a foi um dos dois últimos bytes a serem lidos), ou b se byte ou byte c não corresponder ao padrão 10xxxxxxde bits , então um UTFDataFormatException é lançado. Caso contrário, o grupo será convertido no caractere:

{@code
            (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
            }

Se o primeiro byte de um grupo corresponder ao padrão 1111xxxx ou ao padrão 10xxxxxx, um UTFDataFormatException será lançado.

Se o final do arquivo for encontrado a qualquer momento durante todo esse processo, um EOFException será lançado.

Depois que cada grupo foi convertido em um caractere por esse processo, os caracteres são reunidos, na mesma ordem em que seus grupos correspondentes foram lidos a partir do fluxo de entrada, para formar um String, que é retornado.

O writeUTF método de interface DataOutput pode ser usado para gravar dados que é adequado para leitura por este método.

Documentação Java para java.io.DataInput.readUTF().

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

Confira também