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(); } }
原文:https://www.cnblogs.com/liuluyao/p/13602916.html