亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解決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)容讀出來,為啥亂碼了?

點(diǎn)進(jìn)去看看實現(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類型被強(qiáng)轉(zhuǎn)為 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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JVM中對象的創(chuàng)建與OOP-Klass模型

    JVM中對象的創(chuàng)建與OOP-Klass模型

    這篇文章主要介紹了JVM中對象的創(chuàng)建與OOP-Klass模型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java 如何快速實現(xiàn)一個連接池

    Java 如何快速實現(xiàn)一個連接池

    有沒有一個通用的庫可以快速實現(xiàn)一個線程池呢?得益于 Java 完善的生態(tài),前人們針對這種需要開發(fā)了一個通用庫:Apache Commons Pool(下文簡稱 ACP)。本質(zhì)上來說,ACP 庫提供的是管理對象池的通用能力,當(dāng)然也可以用來管理連接池了!
    2021-05-05
  • Spring?Boot集成JasperReport生成文檔的方法

    Spring?Boot集成JasperReport生成文檔的方法

    由于工作需要,要實現(xiàn)后端根據(jù)模板動態(tài)填充數(shù)據(jù)生成PDF文檔,通過技術(shù)選型,使用Ireport5.6來設(shè)計模板,結(jié)合JasperReports5.6工具庫來調(diào)用渲染生成PDF文檔,這篇文章主要介紹了Spring?Boot集成JasperReport生成文檔,需要的朋友可以參考下
    2023-09-09
  • mybatis自定義類型處理器TypehHandler示例詳解

    mybatis自定義類型處理器TypehHandler示例詳解

    我們在寫mapper映射器的配置文件時,不經(jīng)意間已經(jīng)用到類型轉(zhuǎn)換,不過是mybatis幫我們完成的,下面這篇文章主要給大家介紹了關(guān)于mybatis自定義類型處理器TypehHandler的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • 在windows下揪出java程序占用cpu很高的線程并完美解決

    在windows下揪出java程序占用cpu很高的線程并完美解決

    這篇文章主要介紹了在windows下揪出java程序占用cpu很高的線程并完美解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

    SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題

    今天小編就為大家分享一篇關(guān)于SpringBoot集成shiro,MyRealm中無法@Autowired注入Service的問題,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java Kafka實現(xiàn)延遲隊列的示例代碼

    Java Kafka實現(xiàn)延遲隊列的示例代碼

    kafka作為一個使用廣泛的消息隊列,很多人都不會陌生。本文將利用Kafka實現(xiàn)延遲隊列,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-08-08
  • SpringBoot項目報錯:"Error?starting?ApplicationContext...."解決辦法

    SpringBoot項目報錯:"Error?starting?ApplicationContext....

    這篇文章主要給大家介紹了關(guān)于SpringBoot項目報錯:“Error?starting?ApplicationContext.?To?display?the?conditions?report?re-run?...”的解決辦法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • java 設(shè)計模式(DAO)的實例詳解

    java 設(shè)計模式(DAO)的實例詳解

    這篇文章主要介紹了java 設(shè)計模式(DAO)的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 一文帶你搞懂Java8的LocalDateTime

    一文帶你搞懂Java8的LocalDateTime

    LocalDateTime?是Java8中新加入的日期時間類,現(xiàn)在都?Java20?了,不會還有人沒用過?LocalDateTime?吧?今天給大家演示一下?LocalDateTime?的常用方法
    2023-04-04

最新評論