虽然java.io包中提供“字节流”和“字符流”两类处理支持类,但是在数据传输(或者将数据保存在磁盘)时所操作的数据依然为字节数据,字符数据都是通过缓冲区进行处理后得到的内容。
两类操作的最大区别就是在于字符流使用到类缓冲区(这样更适合进行中文数据的操作),而字节流是直接进行数据处理操作。所以当使用字符输出流进行输出时就必须使用Flushable接口中提供的flush()方法强制性刷新缓冲区中的内容,否则数据将不会输出。
1、字符流输出并强制刷新缓冲区的例子:
package com.mydemo;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class FileIODemo {
public static void main(String[] args) {
File file = new File("e:" + File.separator + "test" + File.separator + "text.txt");
// 判断文件是否存在
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
// 实例化Writer类对象
Writer writer = new FileWriter(file);
// 输出字符串
writer.write("测试字符流输出并强制刷新缓冲区");
// 追加输出内容
writer.append("\r\n厉害了,没见过的科技啊");
/**
* 使用flush()方法刷新缓冲区,
* 如果不使用此方法,
* 那么此时将不会有任何内容保存在文件中。
*/
writer.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}