IDataInput.ReadUTF Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 String
arquivo .
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 110xxxxx
de 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 10xxxxxx
de 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 1110xxxx
de 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 10xxxxxx
de 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.