Demo.java:
package cn.xxx.demo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /* * 打印流 * PrintStream 打印字节流 * PrintWriter 打印字符流(较常用) * 打印流的特点: * 1. 此流不负责数据源,只负责数据目的 * 2. 为其他输出流,添加功能 * 3. 永远不会抛出IOException * 但是,可能抛出别的异常 * * 两个打印流的方法,完全一致 * 构造方法,就是打印流的输出目的端 * PrintStream * 构造方法,接收File类型,接收字符串文件名,接收字节输出流OutputStream * PrintWriter * 构造方法,接收File类型,接收字符串文件名,接收字节输出流OutputStream, 接收字符输出流Writer * */ public class Demo { public static void main(String[] args) throws IOException { function(); } /* * 打印流,可以开启自动flush刷新功能 * 满足2个条件: * 1. 输出的数据目的必须是流对象。 (用File文件对象和String文件名构造PrintWriter不能开启自动刷新功能,因为第二个参数表示编码表) * OutputStream(字节流) Writer(字符流) * 可以将File文件或String文件名包装成流对象,然后再构造PrintWriter来开启自动刷新功能。 * 2. 必须调用println,printf,format三个方法中的一个,启用自动刷新 */ public static void function_1()throws IOException{ FileOutputStream fos = new FileOutputStream("c:\\5.txt"); PrintWriter pw = new PrintWriter(fos,true); // true 表示开启自动flush刷新功能 pw.println("i"); pw.println("love"); pw.println("java"); pw.close(); } /* * 打印流,写入数据 * 方法print println int原样输出,不走码表。 可以打印char[]数组(String的本质就是char[]);其他类型数组,只会打印地址。 * write(int a)方法 写入一个字符,走码表。 还可以写String、char[]数组。 */ public static void function() throws FileNotFoundException{ PrintWriter pw = new PrintWriter("c:\\1.txt"); // 构造函数传String //PrintWriter pw = new PrintWriter(new File("c:\\2.txt")); // 构造函数传文件File //PrintWriter pw = new PrintWriter(new FileWriter("c:\\3.txt")); // 构造函数传字符流FileWriter //PrintWriter pw = new PrintWriter(new FileOutputStream("c:\\4.txt")); // 构造函数传字节流FileOutputStream pw.println(100); // println 自动加换行。 原样输出,不走码表。 pw.write(100); // write(int)方法写入一个字符,走码表。 还可以写String、char[]数组。 pw.close(); } }