共用方式為


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 表示「可能是 01」),則群組只包含該位元組。 位元組會以零延伸來形成字元。

如果群組的第一個字節符合位模式 110xxxxx,則群組會包含該位元組 a 和第二個字節 b。 如果沒有位元組 b (因為 a 位元組是要讀取的最後一個字節),或 b 位元組不符合位模式 10xxxxxx,則會 UTFDataFormatException 擲回 。 否則,群組會轉換成 字元:

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

如果群組的第一個字節符合位模式 1110xxxx,則群組包含該位元組 a 和兩個以上的位元組 bc。 如果沒有位元組 c (因為 a 位元組是最後兩個要讀取的位元組之一),或 b 位元組或 c 位元組不符合位模式 10xxxxxx,則會 UTFDataFormatException 擲回 。 否則,群組會轉換成 字元:

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

如果群組的第一個字節符合模式或模式1111xxxx10xxxxxx,則會UTFDataFormatException擲回 。

如果在這個整個程式期間隨時遇到檔案尾,則會 EOFException 擲回 。

在這裡程式將每個群組轉換成字元之後,會依照從輸入資料流讀取其對應群組的順序收集字元,以形成 String傳回的 。

介面writeUTFDataOutput的 方法可用來寫入適合透過此方法讀取的數據。

java.io.DataInput.readUTF()Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於

另請參閱