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

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

API比較:


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


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

