Java打印流(PrintStream/PrintWriter)

在这里插入图片描述

概念

打印流是输出信息最方便的类,注意包含字节打印流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方法中,可自行查看底层源码


猜你喜欢

转载自blog.csdn.net/qq_72935001/article/details/128708807