Поделиться через


IDataInput.ReadUTF Метод

Определение

Считывает строку, закодированную с помощью измененного формата UTF-8.

[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

Возвращаемое значение

строка Юникода.

Атрибуты

Исключения

Значение , если окончание входных данных достигнуто до того, как запрос на чтение может быть удовлетворен.

Значение , если при чтении возникает ошибка ввода-вывода.

Комментарии

Считывает строку, закодированную с помощью измененного формата UTF-8. Общий контракт readUTF заключается в том, что он считывает представление строки символов Юникода, закодированной в измененном формате UTF-8; эта строка символов затем возвращается в виде String.

Во-первых, два байта считываются и используются для создания 16-разрядного целого числа без знака точно таким образом readUnsignedShort метода. Это целочисленное значение называется длиной UTF и указывает количество дополнительных байтов для чтения. Затем эти байты преобразуются в символы, рассматривая их в группах. Длина каждой группы вычисляется из значения первого байта группы. Байт, следующий за группой, если таковой имеется, является первым байтом следующей группы.

Если первый байт группы соответствует битовой схеме 0xxxxxxx (где x означает "может быть 0 или 1"), группа состоит только из этого байта. Байт равен нулю для формирования символа.

Если первый байт группы соответствует битовой схеме 110xxxxx, группа состоит из этого байта a и второго байта b. Если байтов нет (так как байт ba был последним из байтов для чтения), или если b байт не соответствует битовой схеме 10xxxxxx, UTFDataFormatException создается исключение. В противном случае группа преобразуется в символ:

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

Если первый байт группы соответствует битовой схеме 1110xxxx, группа состоит из этого байта a и двух дополнительных байтов b и c. Если байтов нет (так как байт a был одним из последних двух байтов для чтения), либо b байт c или c байт не соответствует битовой схеме10xxxxxx, то UTFDataFormatException создается исключение. В противном случае группа преобразуется в символ:

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

Если первый байт группы соответствует шаблону 1111xxxx или шаблону 10xxxxxx, UTFDataFormatException создается исключение.

Если конец файла встречается в любое время во время всего процесса, EOFException создается исключение.

После преобразования каждой группы в символ с помощью этого процесса символы собираются в том же порядке, в котором их соответствующие группы были считываются из входного потока, чтобы сформировать Stringвозвращаемый символ.

Метод writeUTF интерфейса DataOutput может использоваться для записи данных, подходящих для чтения этим методом.

Документация по Java для java.io.DataInput.readUTF().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к

См. также раздел