暑期自學 Day 03 | File 類 和 IO 流(三)

Borris發表於2020-05-06

字元流

  • 使用位元組流讀取中文時,會出現一些問題。由於中文在編碼中佔2~3個位元組,一個個位元組讀取輸出時會出現亂碼問題。 – 引入字元流
  • 字元流的構造方法作用和位元組流的一樣,以下做個複習:
    • 建立一個字元流物件
    • 根據傳遞的檔案路徑,建立檔案
    • 將字元流物件指向建立的檔案物件
字元輸入流(Reader)
  • 抽象類,Reader 是最頂層父類
  • 一些共性方法:
    • public int read();public int read(char[] cbuf) 讀取單個或多個字元
    • pbulic void close()
  • 使用步驟
    • 建立 FileReader 物件,傳遞要讀取的檔案。
    • 呼叫 read() 方法,讀取相應的內容
    • 釋放資源
字元輸出流 (Writer)
  • 抽象類,Writer 是最頂層父類

  • 一些共性方法:

    • public int write();public int write(char[] cbuf) 寫入單個或多個字元
    • pbulic void close()
  • 使用步驟

    • 建立 FileWrite 物件,傳遞要讀取的檔案。
    • 呼叫 write() 方法,讀取相應的內容
    • 釋放資源
  • 程式碼示例

          FileWriter fw = new FileWriter("D:\\Programming\\demo02test.txt",true);
          // 寫單個字元
          fw.write('你');
    
          // 寫多個字元
          // 第一種寫法 public void write(char[] c, int off, int len)
          String str = "我是鮑里斯";
          char[] chars = str.toCharArray();
          int len = chars.length;
          fw.write(chars,0,len);
    
          // 第二種寫法 public void write(String, int off, int len)
          fw.write("\r\n"); // 換行
          fw.write("woshibaolisi",0,9);
          fw.close();
    • 注意: 如果 fw.close() 不寫資料只是儲存到緩衝區,不會儲存到檔案。這與 FileOutputStream 不同。
close() 和 flush() 方法的區別
  • flush:重新整理緩衝區,流物件可以繼續使用
  • close:重新整理緩衝區,然後通知系統釋放資源,流物件無法繼續使用。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章