語言

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.

首先,讀取兩個位元組,並用來構造一個無符號的 16 位元整數,完全符合 readUnsignedShort 方法。 這個整數值稱為 UTF 長度 ,並指定要讀取的額外位元組數量。 這些位元組會透過分組來轉換成字元。 每個群組的長度是根據該群組的第一個位元組值計算出來的。 接著一個群組後面的位元組(如果有的話)是下一組的第一個位元組。

若群組的第一個位元組符合位元模式 0xxxxxxx (其中 x 表示「可能是 0 」或 1「),則該群組僅包含該位元組。 該位元組被零擴展以形成一個字元。

若群組的第一個位元組與位元模式 110xxxxx相符,則該群組由該位元組 a 與第二個位元組 b組成。 若沒有位元組 b (因為位元組 a 是最後一個被讀取的位元組),或位元 b 組與位元模式 10xxxxxx不符,則拋出 a UTFDataFormatException 。 否則,該群組會轉換成以下字元:

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

若群組的第一個位元組與位元模式 1110xxxx相符,則該群組由該位元組 a 加上另外兩個位元組 b 組成 c。 若沒有位元組 c (因為位元組 a 是最後兩個位元組之一),或位元 b 組或位元組 c 與位元模式 10xxxxxx不符,則拋出 a UTFDataFormatException 。 否則,該群組會轉換成以下字元:

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

如果一個群組的第一個位元組與模式 1111xxxx 或模式 10xxxxxx相符,則拋出 a UTFDataFormatException

如果在整個過程中任何時候遇到檔案結束,則會拋出 an EOFException

當每個群組透過此過程轉換為字元後,字元會依照從輸入串流讀取的順序收集,形成 String一個 ,並回傳。

writeUTF介面方法DataOutput可用於寫入適合此方法讀取的資料。

Java 文件 java.io.DataInput.readUTF()

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

另請參閱