1. 程式人生 > 實用技巧 >JAVA——緩衝流(字元流的Write 方法)

JAVA——緩衝流(字元流的Write 方法)

package com.cskaoyan.io02.tranfer.writer;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

/**
 * @author [email protected].
 * @version 1.0
 *
 * Writer寫字元資料的方法:
 *
      public void write(int c)
          寫入單個字元。要寫入的字元包含在給定整數值的 16 個低位中,16 高位被忽略。

      public void write(char[] cbuf)
          向字元輸出流中寫入整個字元陣列的多個字元資料

      public void write(char[] cbuf,int off,int len)
            向字元輸出流中寫入整個字元陣列的, 一部分字元資料

      public void write(String str)
        向字元輸出流中,寫入一個字串
      public void write(String str,int off,int len)
       向字元輸出流中,寫入一個字串的一部分字元序列

      所有的字元流,自帶(小)緩衝區,是在編解碼的時候來使用的
      1. 所以,當我們向字元流寫入少量資料的時候,資料有可能存在於自帶的緩衝區中,還沒有寫入底層流
      2. 為了保證,即使是少量字元資料,也能及時將少量字元資料寫入,底層位元組流。
        a. close() 關閉此流,但要先重新整理它
        b. flush() 重新整理該流的緩衝
 */
public class Demo2 {

  public static void main(String[] args) throws IOException {

    String s = "你好, 女神";

      //1. 建立字元輸出流物件
    FileOutputStream fos = new FileOutputStream("a.txt", true);
    Writer writer = new OutputStreamWriter(fos);


    //向檔案中寫入中文字元資料 public void write(int c)
    char[] chars = s.toCharArray();
    //for (int i = 0; i < chars.length; i++) {
    //  writer.write(chars[i]);
    //}

    //  public void write(char[] cbuf)
    //writer.write(chars);

    // public void write(char[] cbuf,int off,int len)
    //writer.write(chars, 0, chars.length);

    //public void write(String str)
    //writer.write(s);

    // public void write(String str,int off,int len)
    writer.write(s, 0, s.length());

    //關閉流  關閉包裝流即可
    writer.close();


  }

}