PrintStream和PrintWriter的區(qū)別簡介
PrintStream和PrintWriter的API幾乎相同,都能輸出各種形式的數(shù)據(jù),構(gòu)造方法也幾乎相同

PrintWriter多了個(gè)接受Writer參數(shù)

API比較:


那么,它們的區(qū)別究竟在哪里?來自stackflow


主要意思就是,2個(gè)類的功能基本相同,PrintStream能做的PrintWriter也都能實(shí)現(xiàn),并且PrintWriter的功能更為強(qiáng)大。但是由于PrintWriter出現(xiàn)的比較晚,較早的System.out使用的是PrintStream來實(shí)現(xiàn)的,所以為了兼容就沒有廢棄PrintStream。
2個(gè)類最大的差別是,PrintStream在輸出字符,將字符轉(zhuǎn)換為字節(jié)時(shí)采用的是系統(tǒng)默認(rèn)的編碼格式,這樣當(dāng)數(shù)據(jù)傳輸另一個(gè)平臺(tái),而另一個(gè)平臺(tái)使用另外一個(gè)編碼格式解碼時(shí)就會(huì)出現(xiàn)問題,存在不可控因素。而PrintWriter可以在傳入Writer時(shí)
可由程序員指定字符轉(zhuǎn)換為字節(jié)時(shí)的編碼格式,這樣兼容性和可控性會(huì)更好。
下面這個(gè)程式顯示了PrintStream與PrintWriter兩個(gè)物件在處理相同輸出目的時(shí)的作法,程式將會(huì)在熒幕上顯示 "簡體中文" 四個(gè)字元:
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();
}
}
}
總結(jié)
以上就是本文關(guān)于PrintStream和PrintWriter的區(qū)別簡介的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Java實(shí)現(xiàn)視頻時(shí)間維度剪切的工具類
這篇文章主要為大家詳細(xì)介紹了將視頻按照時(shí)間維度進(jìn)行剪切的Java工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
基于java實(shí)現(xiàn)具有時(shí)效性文件鏈接
這篇文章主要為大家詳細(xì)介紹了如何基于java實(shí)現(xiàn)具有時(shí)效性的文件鏈接,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-12-12
Spring Boot使用profile如何配置不同環(huán)境的配置文件
,springboot支持通過不同的profile來配置不同環(huán)境的配置,下面就大致介紹一下yml配置文件跟properties配置文件怎么使用profile配置不同環(huán)境的配置文件2018-01-01
利用POI讀取word、Excel文件的最佳實(shí)踐教程
Apache POI 是用Java編寫的免費(fèi)開源的跨平臺(tái)的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 下面這篇文章主要給大家介紹了關(guān)于利用POI讀取word、Excel文件的最佳實(shí)踐的相關(guān)資料,需要的朋友可以參考下。2017-11-11
聊聊Java BigInteger里面的mod和remainder的區(qū)別
這篇文章主要介紹了聊聊Java BigInteger里面的mod和remainder的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

