PrintStream/PrintWriter(打印流)
- 作用:打印流可以更方便、更高效地将数据打印出去,能实现打印啥就出去啥
PrintStream提供地打印数据的方案
构造器 | 说明 |
---|---|
public PrintStream(OutputStream/File/String) | 打印流直接通向字节输出流/文件/文件路径 |
public PrintStream(String fileName, Charset charset) | 可以指定写出去的字符编码 |
public PrintStream(OutputStream out, boolean autoFlush) | 可以指定实现自动刷新 |
public PrintStream(OutputStream out, boolean autoFlush, String encoding) | 可以指定实现自动刷新,并可指定字符的编码 |
方法 | 说明 |
---|---|
public void println(Xxx xx) | 打印任意类型的数据出去,自动换行 |
public void write(int/byte[]/byte[]一部分) | 可支持写字节数据出去 |
PrintWriter提供的打印数据的方案
构造器 | 说明 |
---|---|
public PrintWriter(OutputStream/Writer/File/String) | 打印流直接通向字节输出流/文件/文件路径 |
public PrintWriter(String fileName, Charset charset) | 可以指定写出去的字符编码 |
public PrintWriter(OutputStream out/Writer, boolean autoFlush) | 可以指定实现自动刷新 |
public PrintWriter(OutputStream out, boolean autoFlush, String encoding) | 可以指定实现自动刷新,并可指定字符的编码 |
方法 | 说明 |
---|---|
public void println(Xxx xx) | 打印任意类型的数据出去,自动换行 |
public void write(int/String/char[]/…) | 可以支持写字符数据出去 |
PrintStream和PrintWriter的区别
- 打印数据的功能上使一模一样的:都是使用方便,性能高效(核心优势)
- PrintStream继承自字节输出流OutputStream,因此支持写字节数据的方法
- PrintWriter继承自字符输出流Writer,因此支持写字符数据出去
演示
由于PrintStream和PrintWriter基本没啥不同,所以,以下仅演示PrintStream
public class PrintStreamTest {public static void main(String[] args) {try (// 创建一个打印流管道PrintStream ps = new PrintStream("oop3\\src\\com\\ligemanyin\\_IO\\PrintStreamAndPrintWriter\\printStreamText.txt");) {ps.println("hello world");ps.println('a');ps.println(123);ps.println(123.456);ps.println(true);ps.println("写入成功");} catch (Exception e) {e.printStackTrace();}}
}
打印流的一种应用:输出语句的重定向
- 可以把输出语句的打印位置更改到某个文件中去
PrintStream ps = new PrintStream(“文件地址”)
System.setOut(ps);
演示
public class PrintStreamTest2 {public static void main(String[] args) {// 控制台输出System.out.println("白日依山尽");System.out.println("黄河入海流");try (PrintStream ps = new PrintStream("oop3\\src\\com\\ligemanyin\\_IO\\PrintStreamAndPrintWriter\\printStreamText2.txt");) {// 更改输出位置到指定文件中去System.setOut(ps);//输出到指定文件中System.out.println("欲穷千里目");System.out.println("更上一层楼");} catch (Exception e) {e.printStackTrace();}}
}