打印流

分类
打印流包含两个类:PrintStream、PrintWriter
特点
- 操作方向:只操作文件目的地,不操作数据源
- 数据原样写出:通过特有的写出方法,能将数据(如
97、true)原样写入文件 - 自动换行 + 刷新:特有的写出方法支持自动换行、自动刷新,一次打印等价于 “写出 + 换行 + 刷新”
字节打印流
构造方法
| 构造方法 | 说明 |
|---|
public PrintStream(OutputStream/File/String) | 关联字节输出流 / 文件 / 文件路径 |
public PrintStream(String fileName, Charset charset) | 指定字符编码 |
public PrintStream(OutputStream out, boolean autoFlush) | 自动刷新(注:字节流底层无缓冲区,自动刷新开关效果一致) |
public PrintStream(OutputStream out, boolean autoFlush, String encoding) | 指定字符编码且自动刷新 |
成员方法
| 成员方法 | 说明 |
|---|
public void write(int b) | 常规方法:按字节写出数据 |
public void println(Xxx xx) | 特有方法:打印任意数据,自动刷新 + 自动换行 |
public void print(Xxx xx) | 特有方法:打印任意数据,不换行 |
public void printf(String format, Object... args) | 特有方法:带占位符的打印,不换行 |
PrintStream ps = new PrintStream(new FileOutputStream("myio\\a.txt"), true, Charset.forName("UTF-8"))
ps.println(97);
ps.print(true);
ps.println();
ps.printf("%s爱上了%s","阿珍","阿强");
ps.close();
字符打印流
构造方法
| 构造方法 | 说明 |
|---|
public PrintWriter(Write/File/String) | 关联字符输出流 / 文件 / 文件路径 |
public PrintWriter(String fileName, Charset charset) | 指定字符编码 |
public PrintWriter(Write w, boolean autoFlush) | 自动刷新(注:字符流底层有缓冲区,需开启自动刷新) |
public PrintWriter(OutputStream out, boolean autoFlush, Charset charset) | 指定字符编码且自动刷新 |
成员方法
| 成员方法 | 说明 |
|---|
public void write(...) | 常规方法:写出字节或字符串(规则与之前一致) |
public void println(Xxx xx) | 特有方法:打印任意类型数据并换行 |
public void print(Xxx xx) | 特有方法:打印任意类型数据,不换行 |
public void printf(String format, Object... args) | 特有方法:带占位符的打印语句 |
PrintWriter pw = new PrintWriter(new FileWriter("myio\\a.txt"),true);
pw.println("今天你终于叫我名字了,虽然叫错了,但是没关系,我马上改");
pw.print("你好你好");
pw.printf("%s爱上了%s","阿珍","阿强");
pw.close();
public class PrintStreamDemo4 {
public static void main(String[] args) {
PrintStream ps = System.out;
ps.println("123");
ps.println("你好你好");
System.out.println("456");
}
}
总结
- 分类:分为字节打印流、字符打印流两种
- 通用特点:不操作数据源,只能操作目的地
- 字节打印流特点:默认自动刷新,特有的
println方法支持自动换行 - 字符打印流特点:自动刷新需要手动开启,特有的
println方法支持自动换行