1. 程式人生 > >對於PrintStream 和PrintWriter的理解 以及各種編碼格式 以及編碼和解碼的解釋

對於PrintStream 和PrintWriter的理解 以及各種編碼格式 以及編碼和解碼的解釋

PrintStream

是一個位元組列印流,System.out對應的型別就是PrintStream

它的建構函式函式可以接收三種資料型別的值。

1,字串路徑。

2File物件。

3OutputStream


PrintWriter

是一個字元列印流。建構函式可以接收四種類型的值。

1,字串路徑。

2File物件。

對於12型別的資料,還可以指定編碼表。也就是字符集。

運算元組的流物件

1、操作位元組陣列

    • ByteArrayInputStream

    • ByteArrayOutputStream

toByteArray();

toString();

writeTo(OutputStream);

2、操作字元陣列。

    • CharArrayReader

    • CharArrayWriter

3、操作字串

    • StringReader

    • StringWriter


對於這些流,源是記憶體。目的也是記憶體。


而且這些流並未呼叫系統資源。使用的就是記憶體中的陣列。

所以這些在使用的時候不需要close


運算元組的讀取流在構造是,必須要明確一個數據源。所以要傳入相對應的陣列。

對於運算元組的寫入流,在建構函式可以使用空引數。因為它內建了一個可變長度陣列作為緩衝區。


這幾個流的出現其實就是通過流的讀寫思想在運算元組。



複合型別資料(比如:姓名、年齡、籍貫、性別等等)

編碼轉換

io中涉及到編碼轉換的流是轉換流和列印流。

但是列印流只有輸出。


在轉換流中是可以指定編碼表的。

預設情況下,都是本機預設的碼錶GBK. 這個編碼表怎麼來的?

System.out.println(System.getProperty("file.encoding"));

常見碼錶:

ascii:美國標準資訊交換碼。使用的是1個位元組的7位來表示該表中的字元。


ISO8859-1:拉丁碼錶。使用1個位元組來表示。


GB2312:簡體中文碼錶。

GBK:簡體中文碼錶,比GB2312融入更多的中文檔案和符號。


unicode:國際標準碼錶。都用兩個位元組表示一個字元。

UTF-8:對unicode進行優化,每一個位元組都加入了標識頭。



編碼轉換:

字串 -->位元組陣列 :編碼。通過getBytes(charset);

位元組陣列-->字串: 解碼。通過String類的建構函式完成。String(byte[],charset);