1、PrintWriter类(java.io包中)
PrintWriter是一个非常实用的输出流。
(1) 构造方法(8种)
▽ PrintWriter是一种过滤流(也叫处理流),能对字节流(OutputStream)和字符流(Writer)进行处理,所以它必然支持对这两种方式的构造:
① 不带自动刷新:
PrintWriter(OutputStream out) 根据现有的OutputStream创建不带自动刷新的对象
PrintWriter(Writer out) 创建不带自动刷新的PrintWriter对象。
② 带自动刷新(autoFlush为true代表能自动刷新):
PrintWriter(OutputStream out, boolean autoFlush)
PrintWriter(Writer out, boolean autoFlush)
▽ PrintWriter能够直接对文件操作,所以它必然支持对文件的构造:
① 不可以指定编码集:
PrintWriter(File file) 使用指定文件创建不带自动刷新的PrintWriter对象
PrintWriter(String fileName) 创建具有指定文件名称且不带自动刷新的PrintWriter对象
② 可以指定编码集:
PrintWriter(File file, String csn) 创建具有指定文件和字符集且不带自动刷新的对象
PrintWriter(String fileName, String csn) 创建具有指定文件名称和字符集且不带自动刷新的
(2) 实现的接口:
▽ Closeable接口。所以它有.close()方法来实现对PrintWriter的关闭。
▽ Flushable接口。所以它有.flush()方法来实现人为的刷新。
▽ Appendable接口。所以它有.append(char c)方法来向此输出流中追加指定字符,等价于print()。
(3) 调用方法
PrintWriter append(char c)
PrintWriter format(String regex,Object args) 以指定格式的字符串和参数写入PrintWriter,等同于printf PrintWriter printf()
Void println(Object obj) 打印obj,可以是基本数据类型或对象,并换行
Void print(Object obj) 同上,但不换行
Void write(int i) 写入单个字符i
Void write(char[] buf) 写入字符数组
Void write(char[] buf, int off, int len) 写入字符数组的某一部分
Void write(String s) 写入字符串
Void write(String s, int off, int len) 写入字符串的某一部分
Boolean checkError() 刷新流并检查其错误状态
4)举例:
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.File;
public class PrintWriterDemo {
public static void main(String[] args) {
PrintWriter pw = null;
String name = "张松伟";
int age = 22;
float score = 32.5f;
char sex = '男';
try {
pw = new PrintWriter(new FileWriter(new File("e:\\file.txt")), true);
pw.printf("姓名:%s;年龄:%d;性别:%c;分数:%5.2f;", name, age, sex, score);
pw.println();
pw.write(name.toCharArray());
} catch (IOException e) {
e.printStackTrace();
} finally {
pw.close();
}
}
}
2、写文件最佳组合
PrintWriter out = new PrintWriter(
new BufferedWriter( new FileWriter( filename ) )
);
PrintWriter 提供print系方法
BufferedWriter 提供缓冲,用以加速
FileWriter 用于写文件
----------------------------------------
PrintWriter以字符为单位,支持汉字,
OutputStreamWriter以字节为单位,不支持汉字
----------------------------------------