Java IO: Reader和Writer
轉(zhuǎn)載自? ?Java IO: Reader和Writer
作者:?Jakob?Jenkov?譯者:?李璟(jlee381344197@gmail.com)
Reader
原文鏈接
Reader是Java?IO中所有Reader的基類(lèi)。Reader與InputStream類(lèi)似,不同點(diǎn)在于,Reader基于字符而非基于字節(jié)。換句話說(shuō),Reader用于讀取文本,而InputStream用于讀取原始字節(jié)。
請(qǐng)記住,Java內(nèi)部使用UTF8編碼表示字符串。輸入流中一個(gè)字節(jié)可能并不等同于一個(gè)UTF8字符。如果你從輸入流中以字節(jié)為單位讀取UTF8編碼的文本,并且嘗試將讀取到的字節(jié)轉(zhuǎn)換成字符,你可能會(huì)得不到預(yù)期的結(jié)果。
read()方法返回一個(gè)包含了讀取到的字符內(nèi)容的int類(lèi)型變量(譯者注:0~65535)。如果方法返回-1,表明Reader中已經(jīng)沒(méi)有剩余可讀取字符,此時(shí)可以關(guān)閉Reader。-1是一個(gè)int類(lèi)型,不是byte或者char類(lèi)型,這是不一樣的。
你通常會(huì)使用Reader的子類(lèi),而不會(huì)直接使用Reader。Reader的子類(lèi)包括InputStreamReader,CharArrayReader,FileReader等等。可以查看Java?IO概述瀏覽完整的Reader表格。
Reader通常與文件、字符數(shù)組、網(wǎng)絡(luò)等數(shù)據(jù)源相關(guān)聯(lián),Java?IO概述中同樣說(shuō)明了這一點(diǎn)。
Writer
原文鏈接
Writer是Java?IO中所有Writer的基類(lèi)。與Reader和InputStream的關(guān)系類(lèi)似,Writer基于字符而非基于字節(jié),Writer用于寫(xiě)入文本,OutputStream用于寫(xiě)入字節(jié)。
同樣,你最好使用Writer的子類(lèi),不需要直接使用Writer,因?yàn)樽宇?lèi)的實(shí)現(xiàn)更加明確,更能表現(xiàn)你的意圖。常用子類(lèi)包括OutputStreamWriter,CharArrayWriter,FileWriter等。
Writer的write(int?c)方法,會(huì)將傳入?yún)?shù)的低16位寫(xiě)入到Writer中,忽略高16位的數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的Java IO: Reader和Writer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 焉得虎子上一句是什么 焉得虎子意思介绍
- 下一篇: Java IO: 序列化与ObjectI