天天看點

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