Java中PrintStream(列印輸出流)PrintStream 是列印輸出流,它繼承於FilterOutputStream。PrintStream 是用來裝飾其它輸出流。它能為其他輸出流添加了功能,使它們能夠方便地列印各種數據值表示形式。與其他輸出流不同,PrintStream 永遠不會拋出 ...
Java中PrintStream(列印輸出流) PrintStream 是列印輸出流,它繼承於FilterOutputStream。 PrintStream 是用來裝飾其它輸出流。它能為其他輸出流添加了功能,使它們能夠方便地列印各種數據值表示形式。與其他輸出流不同,PrintStream 永遠不會拋出 IOException;它產生的IOException會被自身的函數所捕獲並設置錯誤標記, 用戶可以通過 checkError() 返回錯誤標記,從而查看PrintStream內部是否產生了IOException。另外,PrintStream 提供了自動flush 和 字元集設置功能。所謂自動flush,就是往PrintStream寫入的數據會立刻調用flush()函數。
常用轉換 FileReader——>BufferedReader BufferedReader in= new BufferedReader(new FileReader("Text.java")); InputStream——>InputStreamReader——>BufferedReader BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String——>byte[]——>ByteArrayInputStream——>DataInputStream DataInputStream in= new DataInputStream(new ByteArrayInputStream(str.getBytes())); FileInputStream——>BufferedInputStream——>DataInputStream DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream("Data.txt"))); FileWriter——>BufferedWriter——>PrintWriter PrintWriter pw=new PrintWriter(new BufferedWriter("text.out")); System.out(PrintStream)——>PrintWriter PrintWriter pw=new PrintWriter(System.out,true); FileOutputStream——>BufferedOutputStream——>PrintStream PrintStream ps= new PrintStream(new BufferedOutputStream(new FileOutputStream("text.out"))); FileOutputStream——>BufferedOutputStream——>DataOutputStream DataOutputStream dos= new DataOutputStream(new BufferedOutputStream(new FileOutputStream("Data.txt"))); 構造方法: PrintStream(File file) 創建具有指定文件且不帶自動行刷新的新列印流。 PrintStream(File file, String csn) 創建具有指定文件名稱和字元集且不帶自動行刷新的新列印流。 PrintStream(OutputStream out) 創建新的列印流。 PrintStream(OutputStream out, boolean autoFlush) 創建新的列印流。 PrintStream(OutputStream out, boolean autoFlush, String encoding) 創建新的列印流。 PrintStream(String fileName) 創建具有指定文件名稱且不帶自動行刷新的新列印流。 PrintStream(String fileName, String csn) 創建具有指定文件名稱和字元集且不帶自動行刷新的新列印流。 PrintStream和DataOutputStream異同點 相同點:都是繼承與FileOutputStream,用於包裝其它輸出流。 不同點: (01) PrintStream和DataOutputStream 都可以將數據格式化輸出;但它們在“輸出字元串”時的編碼不同。 PrintStream是輸出時採用的是用戶指定的編碼(創建PrintStream時指定的),若沒有指定,則採用系統預設的字元編碼。而DataOutputStream則採用的是UTF-8。 關於UTF-8的字元編碼可以參考“字元編碼(ASCII,Unicode和UTF-8) 和 大小端” 關於DataOutputStream的更多內容,可以參考“java io系列15之 DataOutputStream(數據輸出流)的認知、源碼和示例” (02) 它們的寫入數據時的異常處理機制不同。 DataOutputStream在通過write()向“輸出流”中寫入數據時,若產生IOException,會拋出。 而PrintStream在通過write()向“輸出流”中寫入數據時,若產生IOException,則會在write()中進行捕獲處理;並設置trouble標記(用於表示產生了異常)為true。用戶可以通過checkError()返回trouble值,從而檢查輸出流中是否產生了異常。 (03) 構造函數不同 DataOutputStream的構造函數只有一個:DataOutputStream(OutputStream out)。即它只支持以輸出流out作為“DataOutputStream的輸出流”。 而PrintStream的構造函數有許多:和DataOutputStream一樣,支持以輸出流out作為“PrintStream輸出流”的構造函數;還支持以“File對象”或者“String類型的文件名對象”的構造函數。 而且,在PrintStream的構造函數中,能“指定字元集”和“是否支持自動flush()操作”。 (04) 目的不同 DataOutputStream的作用是裝飾其它的輸出流,它和DataInputStream配合使用:允許應用程式以與機器無關的方式從底層輸入流中讀寫java數據類型。 而PrintStream的作用雖然也是裝飾其他輸出流,但是它的目的不是以與機器無關的方式從底層讀寫java數據類型;而是為其它輸出流提供列印各種數據值表示形式,使其它輸出流能方便的通過print(), println()或printf()等輸出各種格式的數據。 http://www.apihome.cn/api/java/PrintStream.html http://www.cnblogs.com/skywang12345/p/io_16.html