Java IO: Reader And Writer
轉(zhuǎn)載自??Java IO: Reader And Writer
譯文鏈接?作者: Jakob?Jenkov??譯者: 李璟(jlee381344197@gmail.com)
Java?IO的Reader和Writer除了基于字符之外,其他方面都與InputStream和OutputStream非常類似。他們被用于讀寫文本。InputStream和OutputStream是基于字節(jié)的,還記得嗎?
Reader
Reader類是Java?IO中所有Reader的基類。子類包括BufferedReader,PushbackReader,InputStreamReader,StringReader和其他Reader。
這是一個(gè)簡單的Java?IO?Reader的例子:
請(qǐng)注意,InputStream的read()方法返回一個(gè)字節(jié),意味著這個(gè)返回值的范圍在0到255之間(當(dāng)達(dá)到流末尾時(shí),返回-1),Reader的read()方法返回一個(gè)字符,意味著這個(gè)返回值的范圍在0到65535之間(當(dāng)達(dá)到流末尾時(shí),同樣返回-1)。這并不意味著Reade只會(huì)從數(shù)據(jù)源中一次讀取2個(gè)字節(jié),Reader會(huì)根據(jù)文本的編碼,一次讀取一個(gè)或者多個(gè)字節(jié)。
你通常會(huì)使用Reader的子類,而不會(huì)直接使用Reader。Reader的子類包括InputStreamReader,CharArrayReader,FileReader等等。可以查看Java IO概述瀏覽完整的Reader表格。
整合Reader與InputStream
一個(gè)Reader可以和一個(gè)InputStream相結(jié)合。如果你有一個(gè)InputStream輸入流,并且想從其中讀取字符,可以把這個(gè)InputStream包裝到InputStreamReader中。把InputStream傳遞到InputStreamReader的構(gòu)造函數(shù)中:
在構(gòu)造函數(shù)中可以指定解碼方式。更多內(nèi)容請(qǐng)參閱InputStreamReader。
Writer
Writer類是Java?IO中所有Writer的基類。子類包括BufferedWriter和PrintWriter等等。這是一個(gè)Java?IO?Writer的例子:
Writer writer = new FileWriter("c:\\data\\file-output.txt"); writer.write("Hello World Writer"); writer.close();同樣,你最好使用Writer的子類,不需要直接使用Writer,因?yàn)樽宇惖膶?shí)現(xiàn)更加明確,更能表現(xiàn)你的意圖。常用子類包括OutputStreamWriter,CharArrayWriter,FileWriter等。Writer的write(int c)方法,會(huì)將傳入?yún)?shù)的低16位寫入到Writer中,忽略高16位的數(shù)據(jù)。
整合Writer和OutputStream
與Reader和InputStream類似,一個(gè)Writer可以和一個(gè)OutputStream相結(jié)合。把OutputStream包裝到OutputStreamWriter中,所有寫入到OutputStreamWriter的字符都將會(huì)傳遞給OutputStream。這是一個(gè)OutputStreamWriter的例子:
Writer?writer?=?new?OutputStreamWriter(outputStream);
整合Reader和Writer
和字節(jié)流一樣,Reader和Writer可以相互結(jié)合實(shí)現(xiàn)更多更有趣的IO,工作原理和把Reader與InputStream或者Writer與OutputStream相結(jié)合類似。舉個(gè)栗子,可以通過將Reader包裝到BufferedReader、Writer包裝到BufferedWriter中實(shí)現(xiàn)緩沖。以下是例子:
Reader reader = new BufferedReader(new FileReader(...)); Writer writer = new BufferedWriter(new FileWriter(...));總結(jié)
以上是生活随笔為你收集整理的Java IO: Reader And Writer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为5G消失的1083天:“过重山”的华
- 下一篇: Java IO: 异常处理