天天看点

Java IO流-处理流-打印流

Java IO流 -> 处理流 -> 打印流

  • PrintWriter & PrintStream
  • 都属于输出流,分别针对于字符流和字节流。
  • 提供了重载print、println方法用于多种数据类型的输出。
  • 输出操作不会抛出异常,用户通过检测错误状态来获取错误信息。
  • 有自动flush功能。
import java.io.*;

/**
 * 测试PrintWriter和PrintStream
 */
public class TestPrint {
    public static void main(String[] args) {
        TestPrint.testPrintStream();
        testPrintWriter();
    }

    /**
     * 测试字符打印流
     */
    public static void testPrintWriter(){
        try (Writer out = new FileWriter("printWriter.txt")){
            PrintWriter pw = new PrintWriter(new BufferedWriter(out),true);
            pw.println(" try (Writer out = new FileWriter(\"printWriter.txt\")){");
            pw.println("PrintWriter pw = new PrintWriter(new BufferedWriter(out),true);");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 测试字节打印流
     */
    public static void testPrintStream(){
        System.out.println("输出数据:");
        PrintStream ps = System.out;
        ps.println(true);
        try (OutputStream out = new FileOutputStream("printStream.txt")){
            //添加BufferedOutputStream提高效率
            ps = new PrintStream(new BufferedOutputStream(out),true);
            ps.println("wangjiaoaaaaaaaa");
            //ps.flush();
            //重新设置目的地
            System.setOut(ps);
            System.out.println("重定向System.out");
            //重新指定到控制台
            ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)),true);
            System.setOut(ps);
            System.out.println("System.out重新指定到控制台");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}