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