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();
}
}
}