PrintStream和PrintWriter的API幾乎相同,都能輸出各種形式的數據,構造方法也幾乎相同
PrintWriter多了個接受Writer參數
API比較:
那么,它們的區別究竟在哪里?來自stackflow
主要意思就是,2個類的功能基本相同,PrintStream能做的PrintWriter也都能實現,并且PrintWriter的功能更為強大。但是由于PrintWriter出現的比較晚,較早的System.out使用的是PrintStream來實現的,所以為了兼容就沒有廢棄PrintStream。
2個類最大的差別是,PrintStream在輸出字符,將字符轉換為字節時采用的是系統默認的編碼格式,這樣當數據傳輸另一個平臺,而另一個平臺使用另外一個編碼格式解碼時就會出現問題,存在不可控因素。而PrintWriter可以在傳入Writer時可由程序員指定字符轉換為字節時的編碼格式,這樣兼容性和可控性會更好。
下面這個程式顯示了PrintStream與PrintWriter兩個物件在處理相同輸出目的時的作法,程式將會在熒幕上顯示 "簡體中文" 四個字元:
java;">StreamWriterDemo.java package onlyfun.caterpillar;import java.io.*;public class StreamWriterDemo { public static void main(String[] args) { try { byte[] sim = {(byte)0xbc, (byte)0xf2, // 簡 (byte)0xcc, (byte)0xe5, // 體 (byte)0xd6, (byte)0xd0, // 中 (byte)0xce, (byte)0xc4 } ; // 文 InputStreamReader inputStreamReader = new InputStreamReader(new ByteArrayInputStream(sim), "GB2312"); PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(System.out, "GB2312")); PrintStream printStream =new PrintStream(System.out, true, "GB2312"); int in; while((in = inputStreamReader.read()) != -1) { printWriter.println((char)in); printStream.println((char)in); } inputStreamReader.close(); printWriter.close(); printStream.close(); } catch(ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); }}}
總結
以上就是本文關于PrintStream和PrintWriter的區別簡介的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
新聞熱點
疑難解答
圖片精選