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();//不需要關閉鍵盤錄入這種標准輸入流,一旦關閉,后面獲取不到。 } }