字符打印流
打印流分类: 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) | 写一个字符串的一部分 |
字符打印流的练习
xxxxxxxxxx
package 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();
}
}