您好,登錄后才能下訂單哦!
這篇文章給大家介紹PrintStream和PrintWriter有什么區別,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
PrintStream和PrintWriter的API幾乎相同,都能輸出各種形式的數據,構造方法也幾乎相同
PrintWriter多了個接受Writer參數
API比較:
那么,它們的區別究竟在哪里?來自stackflow
主要意思就是,2個類的功能基本相同,PrintStream能做的PrintWriter也都能實現,并且PrintWriter的功能更為強大。但是由于PrintWriter出現的比較晚,較早的System.out使用的是PrintStream來實現的,所以為了兼容就沒有廢棄PrintStream。
2個類最大的差別是,PrintStream在輸出字符,將字符轉換為字節時采用的是系統默認的編碼格式,這樣當數據傳輸另一個平臺,而另一個平臺使用另外一個編碼格式解碼時就會出現問題,存在不可控因素。而PrintWriter可以在傳入Writer時可由程序員指定字符轉換為字節時的編碼格式,這樣兼容性和可控性會更好。
下面這個程式顯示了PrintStream與PrintWriter兩個物件在處理相同輸出目的時的作法,程式將會在熒幕上顯示 "簡體中文" 四個字元:
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有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。