概念
打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流PrintWriter。打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符串。而且永远不会抛出IOException异常。
- PrintStream字节打印流
- PrintWriter字符打印流
一般使用PrintWriter,灵活性更强
打印流只有输出流,没有输入流,主要用于打印,会把你的信息指定到一个位置(显示器或文件等)
PrintStream
由图可知PrintStream的直接父类是FilterOutputStream,顶级父类是OutputStream(字节流)
该类提供了7个构造方法,根据应用场景进行操作,具体方法可查看JDK文档或百度
经典用法
System.out:表示标准输出,用来往控制台输出数据,控制台默认打印的是hello world(默认打印是在显示器打印,可以进行修改数据输出的位置)
PrintStream out = System.out;
out.print("hello world");
out.close();
下图为PrintStream类的print方法源码,可以看出print的底层使用的write方法,所以也可以直接调用write方法
writer方法
因为writer方法底层是按照字节打印的(PrintStream本身就是字节流),所以getBytes方法(String类中)得到一个操作系统默认的编码格式的字节数组
PrintStream out = System.out;
try {
out.write("hello world".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
out.close();
修改打印流的输出位置/设备
输出到E盘下的文件,此时代码执行过后,hello world则输出到该文件(使用setOut方法,System类)
String s = "E:\\test.txt";
try {
System.setOut(new PrintStream(s));
System.out.println("hello world");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
PrintWriter
由图可知PrintWriter的直接父类Writer
该类提供了八个构造器,根据不同的场景选择操作,具体方法可查看JDK文档或百度
总体上操作方法与PrintStream相同
默认方式
因为这里的System.out未设置,所以默认是显示器输出
PrintWriter printWriter = new PrintWriter(System.out);
printWriter.print("hi,你好");
printWriter.close();
指定路径的输出方式
PrintWriter中传入的是指定路径,所以此时代码的执行结果在相对于的文件中
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter(new FileWriter("E:\\test.txt"));
} catch (IOException e) {
e.printStackTrace();
}
printWriter.print("hi,你好");
printWriter.close();
注意:PrintStream和PrintWriter的操作中,最后必须要close关闭,因为实际的输出方法在close方法中,可自行查看底层源码