package cn.itcast.demo2; 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(与printstream区别) * */ public class PrintWriterDemo { public static void main(String[] args) throws IOException { function_3(); } /* * 打印流,可以开启自动刷新功能 * 满足2个条件: * 1. 输出的数据目的必须是流对象 * OutputStream Writer * 2. 必须调用println,printf,format三个方法中的一个,启用自动刷新 */ public static void function_3()throws IOException{ //File f = new File("XXX.txt"); FileOutputStream fos = new FileOutputStream("c:\\5.txt"); PrintWriter pw = new PrintWriter(fos,true);//true代表开启自刷新 pw.println("i"); pw.println("love"); pw.println("java"); pw.close(); } /* * 打印流,输出目的,是流对象 * 可以是字节输出流,可以是字符的输出流 * OutputStream Writer */ public static void function_2() throws IOException{ // FileOutputStream fos = new FileOutputStream("c:\\3.txt"); FileWriter fw = new FileWriter("c:\\4.txt"); PrintWriter pw = new PrintWriter(fw); pw.println("打印流"); pw.close(); } /* * 打印流,输出目的,String文件名 */ public static void function_1() throws FileNotFoundException{ PrintWriter pw = new PrintWriter("c:\\2.txt"); pw.println(3.5); pw.close(); } /* * 打印流,向File对象的数据目的写入数据 * 方法print println 原样输出 * write方法走码表 */ public static void function() throws FileNotFoundException{ File file = new File("c:\\1.txt"); PrintWriter pw = new PrintWriter(file); pw.println(true); pw.write(100);//输出是d,pw.print则是原样输出 pw.close();//PrintWriter时字符输出流,是writer的子类,所以需要刷新和关闭 } }
小细节:在输出语句里,char数组是输出数组元素,其他都是输出哈希值
package cn.itcast.demo2; /* * String s = "abc";final char[] value */ public class Demo { public static void main(String[] args) { int[] arr = {1}; System.out.println(arr); char[] ch = {'a','b'}; System.out.println(ch);//print(char[] x)方法里做了数组的遍历,所以会输出数组元素,只有char如此,其他都是输出哈希值 byte[] b = {}; System.out.println(b); } } /* * 输出结果是: [I@15db9742 ab [B@6d06d69c */