Reader是另一種InputStream;InputStream讀取的單位是byte抚垃;Reader讀取單位是char迎吵;
Reader是基于InputStream的氨距;一般的Reader里面都有一個InputStream;根據(jù)InputStream的字節(jié)蜒谤,配合編碼山宾,變?yōu)閏har;??;FileReader里面有FileInputStream.....??
FileReader是Reader的實現(xiàn)類
Reader reader=new FileReader("filename");
int n = reader.read();//-1表示讀取完畢,n:0-65535 char:倆字節(jié)
while(n!=-1){
sout((char)n)
n=reader.read()
}
【注】new FileReader(filename),不設(shè)置第二參數(shù)charset時鳍徽,默認(rèn)使用系統(tǒng)編碼资锰;
new FileReader(filename,StandardCharsets.UTF_8);//使用utf-8
還有其他的Reader
CharArrayReader
Reader reader=new CharArrayReader("hello".toCharArray());
//這倆個是不是很類似的??
InputSream input=new ByteArrayInputStream("hello".getBytes());
StringReader
Reader reader=new StringReader("hello");
sout((char)reader.read())
reader.close();//和InputStream一樣都應(yīng)該關(guān)閉
InputStreamReader
//前面我們提到了Reader和InputStream的緊密型,可以將Reader當(dāng)作InputStream基本單位轉(zhuǎn)換為char的轉(zhuǎn)換器阶祭;
//將InputStream轉(zhuǎn)換為Reader也是可行的绷杜;
try(Reader reader=new InputStreamReader(new FileInputStream(filename),"utf-8")){}