IDataInput.ReadUTF 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
以已修改 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
,則會 UTFDataFormatException
擲回 。 否則,群組會轉換成 字元:
{@code (char)(((a & 0x1F) << 6) | (b & 0x3F))
}
如果群組的第一個字節符合位模式 1110xxxx
,則群組包含該位元組 a
和兩個以上的位元組 b
和 c
。 如果沒有位元組 c
(因為 a
位元組是最後兩個要讀取的位元組之一),或 b
位元組或 c
位元組不符合位模式 10xxxxxx
,則會 UTFDataFormatException
擲回 。 否則,群組會轉換成 字元:
{@code
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
}
如果群組的第一個字節符合模式或模式1111xxxx
10xxxxxx
,則會UTFDataFormatException
擲回 。
如果在這個整個程式期間隨時遇到檔案尾,則會 EOFException
擲回 。
在這裡程式將每個群組轉換成字元之後,會依照從輸入資料流讀取其對應群組的順序收集字元,以形成 String
傳回的 。
介面writeUTF
DataOutput
的 方法可用來寫入適合透過此方法讀取的數據。
的 java.io.DataInput.readUTF()
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。