亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

dataoutputstream亂碼如何解決

發布時間:2023-01-05 11:48:20 來源:億速云 閱讀:805 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“dataoutputstream亂碼如何解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“dataoutputstream亂碼如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

dataoutputstream亂碼的解決辦法:1、通過“dos.write("...".getBytes());”方式寫入String;2、設置“new OutputStreamWriter(new FileOutputStream(file), "utf-8");”即可。

解決DataOutputStream亂碼的問題

這個坑我就先踩為敬了,重要的話說三遍!

千萬不要用DataOutputStream的 writeBytes 方法

千萬不要用DataOutputStream的 writeBytes 方法

千萬不要用DataOutputStream的 writeBytes 方法

我們使用 DataOutputStream 的時候,比如想寫入String ,你就會看到三個方法

public final void writeBytes(String s)
public final void writeChars(String s)
public final void writeUTF(String str)

OK,那你試著去寫入相同的內容后,再去讀取一下試試

File file = new File("d:"+File.separator+"test.txt");
  DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
  dos.writeBytes("你好");
  dos.writeChars("你好");
  dos.writeUTF("你好");
  dos.flush();
  dos.close();
 
  DataInputStream dis = new DataInputStream(new FileInputStream(file));
  byte[] b = new byte[2];
  dis.read(b);
           //  `}
  System.out.println(new String(b, 0, 2));
 
  char[] c = new char[2];
  for (int i = 0; i < 2; i++) {
   c[i] = dis.readChar();
  }
           //你好
  System.out.println(new String(c, 0, 2));
  //你好
  System.out.println(dis.readUTF());

是的,你沒看錯,writeBytes方法寫入的內容讀出來,為啥亂碼了?

點進去看看實現

public final void writeBytes(String s) throws IOException {
       int len = s.length();
       for (int i = 0 ; i < len ; i++) {
           out.write((byte)s.charAt(i));
       }
       incCount(len);
   }

大哥,這char類型被強轉為 byte類型了,失精度了呀,怪不得回不來了,所以使用的時候千萬別貪方便,老老實實換成 dos.write("你好".getBytes()); 都好的呀

DataOutputStream寫入txt文件數據亂碼

這是正常的,如果要讀,要用DataInputStream讀出,如果僅要保成文本文件直接要FileOutputStream或PrintWriter

OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
oStreamWriter.append(str);
oStreamWriter.close();

主要是編碼方式不一樣,要用字符流 而非字節流,BufferedReader類從字符輸入流中讀取文本并緩沖字符,以便有效地讀取字符,數組和行。

讀到這里,這篇“dataoutputstream亂碼如何解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

竹北市| 金堂县| 常山县| 鄯善县| 吉安市| 来安县| 汾西县| 同心县| 普兰县| 江山市| 仲巴县| 和平县| 石河子市| 汨罗市| 磴口县| 重庆市| 临沂市| 镇安县| 灯塔市| 福清市| 长岛县| 武鸣县| 宾川县| 名山县| 施秉县| 九寨沟县| 平安县| 松桃| 宜川县| 三原县| 弥渡县| 和平县| 晋江市| 满洲里市| 盐池县| 孝昌县| 梅河口市| 托克逊县| 灵宝市| 喀喇| 于都县|