JavaSE|打印流、PrintWriter
打印流
字节流打印流:PrintStream
字符打印流:PrintWriter
打印流特点:
- 只有写数据的,没有读取数据。只能操作目的地不能操作数据源。
- 可以操作任意类型的数据。
- 如果启动了自动刷新,能够自动刷新。
- 该流是可以直接操作文本文件的。
哪些流可以直接操作文本文件?
- FileInputStream
- FileOutputStream
- FileReader
- FileWriter
- PrintStream
- PrintWriter
- 看API,查流对象的构造方法,如果同时有File和String类型的参数,一般可以直接操作文件。
另一种流的分类方法:
- 基本流:能够直接读写文件的流
- 高级流:在基本流基础上提供了一些其他的功能
PrintWriter
PrintWriter作为字符输出流的基本用法:
PrintWriter pw = new PrintWriter("pw.txt");
// 文件内容为:helloworldJava
pw.write("hello");
pw.write("world");
pw.write("Java");
pw.close();
PrintWriter写任意类型数据:
使用print()或者println()方法都可以。
PrintWriter pw = new PrintWriter("pw.txt");
// 文件内容为:true100.0world
pw.print(true);
pw.print(100d);
pw.print("world");
pw.close();
PrintWriter启动自动刷新:
- 启用了自动刷新:PrintWriter pw = new PrintWriter(new FileWriter(“pw.txt”),true);
- 如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作。
println()其实等价于:
bw.write();
bw.newLine();
bw.flush();
PrintWriter pw = new PrintWriter(new FileWriter("pw.txt"),true);
// 文件内容为:
// Pig
// true
// 50
pw.println("Pig");
pw.println(true);
pw.println(50);
pw.close();
PrintWriter复制文件:
BufferedReader br = new BufferedReader(new FileReader("BufferedReaderDemo.java"));
PrintWriter pw = new PrintWriter(new FileWriter("Copy.java"),true);
String line = null;
while((line = br.readLine()) != null){
pw.println(line);
}
pw.close();
br.close();