https://www.bilibili.com/video/BV1ct411n7oG?p=187
打印流也是处理流:

System.out就是这个流。
这个流方便我们打印各种数据。只见字节流。
PrintStream的构造器:

他的构造器可以直接指定文件,可以指定文件的编码,以及文件的对象,还可以指定字节流。
他的字节流可以自动刷新,不用手动的flush了。
以及可以指定字节流处理文本时候的编码的字符集。
PrintStream的append方法的内部返回的是this对象。
测试PrintStream的println方法:
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
//打印流
PrintStream ps = System.out;
ps.println("打印流");
ps.println(true);
}
}输出结果:
打印流
true
在PrintStream的构造器中传入字节流对象。
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")));
ps.println("打印流");
ps.println(true);
ps.flush();
ps.close();
}
}
运行结果:

设置为自动刷新:
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
ps.println("打印流");
ps.println(true);
ps.close();
}
}
重定向输出端:
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
//重定向输出端
System.setOut(ps);
System.out.println("change");
ps.close();
}
}
结果没有输出到控制台,而是输出到了print.txt文件中:

系统提供文件描述符FileDescriptor
FileDescriptor.out就是标准的输出端。
重定向回控制台:
import java.io.BufferedOutputStream;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
//重定向输出端
System.setOut(ps);
System.out.println("change");
ps.close();
//重定向回控制台
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)), true));
System.out.println("I am backing...");
}
}
输出结果:
I am backing...
PrintWriter类提供的方法和PrintStream类似,多了对Writer的处理:

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
//打印流
PrintWriter pw = new PrintWriter(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
pw.println("打印流");
pw.println(true);
pw.close();
}
}运行效果是一样的:

版权声明:本文为BOKEhhh原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。