Java IO(十二):Reader 和 Writer

Reader

Reader 是 Java IO 中所有 Reader 的基類。Reader 與 InputStream 類似,不同點在於,Reader 基於字符而非基於字節。換句話說,Reader 用於讀取文本,而 InputStream 用於讀取原始字節。

請記住,Java 內部使用 UTF-8 編碼表示字符串。輸入流中一個字節可能並不等同於一個 UTF-8 字符。如果你從輸入流中以字節爲單位讀取 UTF-8 編碼文本,並且嘗試將讀取到的字節轉換成字符,你可能讀不到預期結果。

read() 方法返回一個包含了讀取到的字符內容的 int 類型變量。如果返回 -1 ,表示 Reader 已經沒有剩餘可讀字符,此時可以關閉 Reader。-1 是一個 int 類型,不是 byte 或者 char 類型,這是不一樣的。

你通常會使用 Reader 的子類,而不是直接使用 Reader。Reader 的子類包括 InputStreamReader,CharArrayReader,FileReader 等等。

Reader 通常與文件、字符數組、網絡等數據源相關聯。

Writre

Writer 是 Java IO 中所有 Writer 的基類。與 Reader 和 InputStream 關係相似,Writre 基於字符而非字節,Writer 用於寫入文本,OutputStream用於寫入字節。

同樣,你最好使用 Writer 的子類,不需要直接使用 Writer,因爲子類的實現更加明確,更能表現你的意圖。常用的子類包括 OutputWriter、CharArrayWriter、FileWriter 等。

Writer 的 Write(int c) 方法,會將傳入參數的低16位寫入到 Writer 中,忽略高 16 位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章