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 zhangshuai@Cskaoyan.onaliyun.com.
 * @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();


  }

}

  

 

posted @ 2020-09-02 17:27  LY心情笔记  阅读(501)  评论(0)    收藏  举报