最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決DataOutputStream亂碼的問題

 更新時間:2021年09月16日 15:56:09   作者:qq_29914229  
這篇文章主要介紹了DataOutputStream亂碼問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

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,那你試著去寫入相同的內(nèi)容后,再去讀取一下試試

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方法寫入的內(nèi)容讀出來,為啥亂碼了?

點進去看看實現(xiàn)

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文件數(shù)據(jù)亂碼

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

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

主要是編碼方式不一樣

要用字符流 而非字節(jié)流

BufferedReader類從字符輸入流中讀取文本并緩沖字符,以便有效地讀取字符,數(shù)組和行

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • IDEA打開項目所有東西都在報紅報錯的解決方案

    IDEA打開項目所有東西都在報紅報錯的解決方案

    這篇文章主要給大家介紹了關于IDEA打開項目所有東西都在報紅報錯的三個解決方案,文中通過圖文介紹的非常詳細,對大家學習或者使用idea具有一定的參考學習價值,需要的朋友可以參考下
    2023-06-06
  • SpringMVC異常處理的三種方式小結

    SpringMVC異常處理的三種方式小結

    本文主要介紹了SpringMVC異常處理的三種方式小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • 使用CORS實現(xiàn)JavaWeb跨域請求問題的方法

    使用CORS實現(xiàn)JavaWeb跨域請求問題的方法

    這篇文章主要介紹了使用Cors實現(xiàn)JavaWeb跨域請求問題的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • java中MultipartFile和File最簡單的互相轉換示例

    java中MultipartFile和File最簡單的互相轉換示例

    這篇文章主要給大家介紹了關于java中MultipartFile和File最簡單的互相轉換的相關資料,MultipartFile和File都是Java中用于處理文件上傳的類,MultipartFile用于處理上傳的文件,File用于處理本地磁盤上的文件,需要的朋友可以參考下
    2023-09-09
  • Java的方法和this關鍵字如何理解與應用

    Java的方法和this關鍵字如何理解與應用

    Java語言中的“方法”(Method)在其他語言當中也可能被稱為“函數(shù)”(Function)。對于一些復雜的代碼邏輯,如果希望重復使用這些代碼,并且做到“隨時任意使用”,那么就可以將這些代碼放在一個大括號{}當中,并且起一個名字。使用代碼的時候,直接找到名字調用即可
    2021-10-10
  • Java詳細講解堆排序與時間復雜度的概念

    Java詳細講解堆排序與時間復雜度的概念

    本文主要介紹了java實現(xiàn)堆排序以及時間復雜度,堆排序這種排序算法是我們經(jīng)常用到的,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • openFeign服務之間調用保持請求頭信息處理方式

    openFeign服務之間調用保持請求頭信息處理方式

    這篇文章主要介紹了openFeign服務之間調用保持請求頭信息處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring boot通過切面,實現(xiàn)超靈活的注解式數(shù)據(jù)校驗過程

    Spring boot通過切面,實現(xiàn)超靈活的注解式數(shù)據(jù)校驗過程

    這篇文章主要介紹了Spring boot通過切面,實現(xiàn)超靈活的注解式數(shù)據(jù)校驗過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 圖文詳解Java中的字節(jié)輸入與輸出流

    圖文詳解Java中的字節(jié)輸入與輸出流

    在Java中所有數(shù)據(jù)都是使用流讀寫的,流是一組有序的數(shù)據(jù)序列,將數(shù)據(jù)從一個地方帶到另一個地方,這篇文章主要給大家介紹了關于Java中字節(jié)輸入與輸出流的相關資料,需要的朋友可以參考下
    2021-08-08
  • SpringSecurity+jwt+redis基于數(shù)據(jù)庫登錄認證的實現(xiàn)

    SpringSecurity+jwt+redis基于數(shù)據(jù)庫登錄認證的實現(xiàn)

    本文主要介紹了SpringSecurity+jwt+redis基于數(shù)據(jù)庫登錄認證的實現(xiàn),其中也涉及到自定義的過濾器和處理器,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09

最新評論

金山区| 诸暨市| 仙居县| 安远县| 台前县| 赤城县| 呼图壁县| 托克逊县| 江源县| 中牟县| 奈曼旗| 凤山县| 达拉特旗| 绥阳县| 遂昌县| 资中县| 招远市| 西峡县| 洛隆县| 永昌县| 永吉县| 云南省| 长白| 沙湾县| 荣昌县| 武强县| 镇坪县| 永胜县| 松滋市| 宁城县| 德保县| 宁强县| 万山特区| 广德县| 德安县| 康平县| 遂宁市| 拉萨市| 玉林市| 昌江| 新安县|