readUTF()和writeUTF()

來源:互聯網
上載者:User

這是dataOutputStream 的方法~~使用utf-8編碼 其實就是從unicode變過來的,utf8編碼把其中的ASC編碼變成1個位元組,其他其他字元2到3個位元組!因為dataInput(output)Stream 屬於位元組流,所以用這個編碼可以把其他形式的轉化過來   

  1. writeUTF(String str);   
  2. write(int b) ;   
  3. writeBytes(String s) ;   
  4. 這幾個方法可以傳的參數不一樣。   
  5. writeUTF和writeBytes都可以傳String類型的參數,而write就不行了。   
  6.   
  7. public final void writeUTF(String str)   
  8.                     throws IOException以與機器無關方式使用 UTF-8 修改版編碼將一個字串寫入基礎輸出資料流。    
  9. 首先,通過 writeShort 方法將兩個位元組寫入輸出資料流,表示後跟的位元組數。該值是實際寫出的位元組數,不是字串的長度。根據此長度,使用字元的 UTF-8 修改版編碼按順序輸出字串的每個字元。如果沒有拋出異常,則計數器 written 增加寫入輸出資料流的位元組總數。該值至少是 2 加 str 的長度,最多是 2 加 str 的三倍長度。    
  10.   
  11. String readUTF()   
  12.                throws IOException讀入一個已使用 UTF-8 修改版格式編碼的字串。readUTF 的常規協定是:該方法讀取使用 UTF-8 修改版格式編碼的 Unicode 字串的表示形式;然後以 String 的形式返回此字串。    
  13. 首先讀取兩個位元組,並使用它們構造一個無符號 16 位整數,構造方式與 readUnsignedShort 方法的方式完全相同。該整數值被稱為 UTF 長度,它指定要讀取的額外位元組數。然後成組地將這些位元組轉換為字元。每組的長度根據該組第一個位元組的值計算。緊跟在某個組後面的位元組(如果有)是下一組的第一個位元組。    
  14.   
  15. 如果組的第一個位元組與位元模式 0xxxxxxx(其中 x 表示“可能為 0 或 1”)匹配,則該組只有這一個位元組。該位元組被左側補零,轉換成一個字元。    
  16.   
  17. 如果組的第一個位元組與位元模式 110xxxxx 匹配,則該組只由位元組 a 和另一個位元組 b 組成。如果沒有位元組 b(因為位元組 a 是要讀取的最後一個位元組),或者位元組 b 與位元模式 10xxxxxx 不匹配,則拋出 UTFDataFormatException。否則,將該群組轉換成字元:   
  18.   
  19.   
  20. (char)(((a& 0x1F) << 6) | (b & 0x3F))   
  21.  如果組的第一個位元組與位元模式 1110xxxx 匹配,則該組由位元組 a 和另外兩個位元組 b 和 c 組成。如果沒有位元組 c(因為位元組 a 是要讀取的最後兩個位元組之一),或者位元組 b 或位元組 c 與位元模式 10xxxxxx 不匹配,則拋出 UTFDataFormatException。否則,將該群組轉換成字元:   
  22.   
  23.   
  24.  (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))   
  25.  如果組的第一個位元組與模式 1111xxxx 或模式 10xxxxxx 匹配,則拋出 UTFDataFormatException。    
  26. 如果在執行整個過程中的任意時間到達檔案末尾,則拋出 EOFException。    
  27.   
  28. 在通過此過程將每個群組轉換成字元後,按照從輸入資料流中讀取相應組的順序,將這些字元收集在一起,形成一個 String,然後該字串將被返回。    
  29.   
  30. 可以使用 DataOutput 介面的 writeUTF 方法寫入適合此方法讀取的資料。   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.