打印流-PrintStream和PrintWriter


IO包中的其他功能流對象
功能流對象
特點:解決問題的特有方法。

打印流--必須是輸出流(兩個都是)
PrintStream(字節流) PrintWriter(字符流)
特點:打印。不拋異常
打印的目的:File對象,字符串路徑,字節輸出流。


解決的問題:方便的打印各種數據的表示形式。
它的打印方法可以保證數值的表現形式不變。寫的是什么樣子,目的地就是什么樣子

PrintWriter:一樣具備打印功能。
目的:File對象,字符串路徑,字節輸出流,字符輸出流。

PrintStream實例:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
    
public class PrintStreamDemo {

    public static void main(String[] args) throws IOException {
//        System.out.println("hello");
        
//        PrintStream ps = System.out;
//        ps.println("hello");
        
        File dir = new File("tempfile");
        if(!dir.exists()){
            dir.mkdir();
        }
        
        //演示PrintStream的特有方法。
        //1.創建PrintStream對象,目的就定位文件
        PrintStream out = new PrintStream("tempfile\\print.txt");
        
//        out.write(353);//字節流的write方法一次只寫出一個字節,也就是將一個整數的最低八位寫出
        
//        out.write("353".getBytes());  麻煩
        
        out.print(353);//保證數值的表現形式。原理:write(String.valueOf(i));將數值轉成字符串。
        
        out.close();
        
    }

}

PrintWriter實例:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class PrintWriterDemo {

    public static void main(String[] args) throws IOException {
        
        /*
         * 演示一個小例子
         * 讀取鍵盤錄入,將數據轉成大寫顯示在屏幕上。
         */
        
        //1.鍵盤錄入
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        
        //2.定義目的
        //BufferedWriter bufw = new BufferedWriter(new PrintStream(System.out));
        
        PrintWriter pw = new PrintWriter(System.out,true);//對println,printf,format方法自動刷新
        //字符流內部都有緩沖區
        
        //改變目的為文件,還想自動刷新。
        pw = new PrintWriter(new BufferedWriter(new FileWriter("tempfile\\1.txt")),true);
        
        //3.讀一行,寫一行,鍵盤錄入一定要定義結束標記
        String line = null;
        while((line=bufr.readLine())!=null){//readline是一個阻塞式方法
            if("over".equals(line))
                break;
            pw.println(line.toUpperCase());
//            pw.flush();//因為數據被臨時緩存了
        }
        
        pw.close();//系統流關不關都可以
        bufr.close();//不需要關閉鍵盤錄入這種標准輸入流,一旦關閉,后面獲取不到。
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM