字符打印流
打印流分类: 1、字节打印流:PrintStream 2、字符打印流:PrintWriter
PrintWriter类在java.io包下。该类的父类是Writer类,即该类是字符输出流
该类的构造方法,如下。其中,out表示字符输出流、autoFlush表示一个布尔值,如果为真,则使用println、print、format方法将刷新输出缓冲区
| 构造方法 | 作用 |
|---|---|
| PrintWriter(Writer out, boolean autoFlush) | 创建一个新的PrintWriter |
| PrintWriter(String fileName) | 使用指定的文件名创建一个没有自动行刷新的新PrintWriter |
该类的方法,如下
| 方法 | 作用 |
|---|---|
| write(char[] buf) | 写一个字符数组 |
| write(char[] buf, int off, int len) | 写入一个字符数组的一部分 |
| write(int c) | 写一个字符 |
| write(String s) | 写一个字符串 |
| write(String s, int off, int len) | 写一个字符串的一部分 |
字符打印流的练习
xxxxxxxxxxpackage ch20;
import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;
//写数据public class a_8_1测试 {
public static void main(String[] args) throws IOException {
//PrintWriter(String fileName) 使用指定的文件名创建一个没有自动行刷新的新PrintWriter PrintWriter pw = new PrintWriter("D:\\huanf\\java\\src\\ch18_ch19_储物区\\pw.txt");
//写数据 pw.write("hello");//注意PrintWriter是字符打印流,只要是字符流就不能直接把数据写到文件,而是会到缓冲流,我们需要刷新一下缓冲流才会写入文件 pw.write("\r\n"); pw.write("world");//两个数据会在同一行,思考如何解决,如上,加\r\n pw.write("\r\n"); pw.flush();//刷新缓冲流
pw.println("你"); //println方法,写完数据后会自动换行 pw.print("好"); pw.flush();
//总结:该构造方法的换行问题可以通过println解决,但是每次都需要flush刷新缓冲流就比较麻烦,解决如下,即使用另一种构造方法
//------------------------------------------------------------------------------------------------------------------
//PrintWriter(Writer out, boolean autoFlush) 创建一个新的PrintWriter //(1)out 字符输出流 //(2)autoFlush 一个布尔值,如果为真,则使用println、print、format方法将刷新输出缓冲区 PrintWriter pw2 = new PrintWriter(new FileWriter("D:\\huanf\\java\\src\\ch18_ch19_储物区\\pw2.txt"),true);
pw2.write("hello"); pw2.write("\r\n"); pw2.write("world"); pw2.write("\r\n");
pw2.println("你"); pw2.print("好");
//------------------------------------------------------------------------------------------------------------------
//释放资源。一定别忘了这步 pw.close(); pw2.close(); }
}