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

返回

Unicode 字符串。

属性

例外

如果在满足读取请求之前达到输入的末尾,则为 。

如果在读取时出现 I/O 错误,

注解

读取已使用修改后的 UTF-8 格式进行编码的字符串。 一般协定 readUTF 是,它读取以修改的 UTF-8 格式编码的 Unicode 字符串的表示形式;然后,此字符串的字符将作为一个 String返回。

首先,读取两个字节,并用于完全按照方法的方式 readUnsignedShort 构造无符号 16 位整数。 此整数值称为 UTF 长度 ,并指定要读取的其他字节数。 然后,通过在组中考虑这些字节,将这些字节转换为字符。 每个组的长度是从组的第一个字节的值计算的。 组后面的字节(如果有)是下一个组的第一个字节。

如果组的第一个字节与位模式 0xxxxxxx 匹配(其中 x 表示“可能 0 为或 1”),则组只包含该字节。 字节是零扩展的,用于形成字符。

如果组的第一个字节与位模式 110xxxxx匹配,则组由该字节 a 和第二个字节 b组成。 如果没有字节 b (因为字节 a 是要读取的最后一个字节),或者如果字节 b 与位模式 10xxxxxx不匹配,则会引发 a UTFDataFormatException 。 否则,组将转换为字符:

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

如果组的第一个字节与位模式1110xxxx匹配,则组由该字节a组成,再包含两个字节和c两个字节b。 如果没有字节 c (因为字节 a 是要读取的最后两个字节之一),或者字节 b 或字节 c 与位模式 10xxxxxx不匹配,则会引发一个 UTFDataFormatException 。 否则,组将转换为字符:

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

如果组的第一个字节与模式或模式1111xxxx10xxxxxx匹配,则会引发 aUTFDataFormatException

如果在整个过程中随时遇到文件结束,则会引发一个 EOFException 文件。

在此进程将每个组转换为字符后,将按照从输入流中读取相应组的顺序收集字符,形成返回的字符 String

接口writeUTFDataOutput方法可用于写入适合通过此方法读取的数据。

适用于 . 的 java.io.DataInput.readUTF()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

另请参阅