Java IO_打印流 尚学堂186

https://www.bilibili.com/video/BV1ct411n7oG?p=187 


打印流也是处理流

Java IO_打印流 尚学堂186_第1张图片

System.out就是这个流。

这个流方便我们打印各种数据。只见字节流。

PrintStream的构造器:

Java IO_打印流 尚学堂186_第2张图片

他的构造器可以直接指定文件,可以指定文件的编码,以及文件的对象,还可以指定字节流。

他的字节流可以自动刷新,不用手动的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();
	}

}

运行结果:

Java IO_打印流 尚学堂186_第3张图片


设置为自动刷新:

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文件中:

Java IO_打印流 尚学堂186_第4张图片


系统提供文件描述符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的处理:

Java IO_打印流 尚学堂186_第5张图片

 

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

}

运行效果是一样的:

Java IO_打印流 尚学堂186_第6张图片


 

你可能感兴趣的:(Java_尚学堂笔记)