1 .字符流基類
java.io包中專門用於字符流處理的類,是以 Reader 和 Writer 爲基礎派生的一系列類。
字符流以字符爲單位,根據碼錶映射字符,一次可能讀多個字節,只能處理字符類型的數據。
同類 InputStream 和 OutputStream 一樣,Reader 和 Writer 也是抽象類,只提供了一系列用於字符流處理的接口。它們的方法與類 InputStream 和 OutputStream 類似,只不過其中的參數換成字符或字符數組。
Reader 是所有的輸入字符流的父類,它是一個抽象類。
我們先來看一看基類 Reader 的方法,其用法與作用都與 InputStream 和 OutputStream 類似,就不做過多的說明了。
方法返回值
close()void
mark (int readAheadLimit)void
markSupported()boolean
read()int
read(char[] cbuf, int off,int len)int
ready()boolean
reset()void
skip(long n)long
Writer 是所有的輸出字符流的父類,它是一個抽象類。
Writer 的方法:
方法返回值
close()void
flush()void
write(char[] cbuf)void
write(char[] cbuf, int off,int len)void
write(int c)void
write(String str)void
write(String str, int off, int len)void
InputStreamReader 和 OutputStreamWriter 是 java.io 包中用於處理字符流的最基本的類,用來在字節流和字符流之間作爲中介:從字節輸入流讀入字節,並按編碼規範轉換爲字符;往字節輸出流寫字符時先將字符按編碼規範轉換爲字節。使用這兩者進行字符處理時,在構造方法中應指定一定的平臺規範,以便把以字節方式表示的流轉換爲特定平臺上的字符表示。
如果讀取的字符流不是來自本地時(比如網上某處與本地編碼方式不同的機器),那麼在構造字符輸入流時就不能簡單地使用缺省編碼規範,而應該指定一種統一的編碼規範“ISO 8859_1”,這是一種映射到 ASCCII 碼的編碼方式,能夠在不同平臺之間正確轉換字符。
2 .緩存流
同樣的,爲了提高字符流處理的效率,java.io 中也提供了緩衝流 BufferedReader 和 BufferedWrite。其構造方法與 BufferedInputStream 和 BufferedOutPutStream 相類似。另外,除了 read() 和 write() 方法外,它還提供了整行字符處理方法:
public String readLine():BufferedReader 的方法,從輸入流中讀取一行字符,行結束標誌\n、\r或者兩者一起(這是更具系統而定的)
public void newLine():BufferedWriter 的方法,向輸出流中寫入一個行結束標誌,它不是簡單地換行符\n或\r,而是系統定義的行隔離標誌(line separator)。
看一看例子吧:
3. 其它字符流類
在這裏我們就列舉一下有哪些類,具體的木木就不再講解了。
對字符數組進行處理: CharArrayReader、CharArrayWrite
對文本文件進行處理:FileReader、FileWriter
對字符串進行處理:StringReader、StringWriter
過濾字符流:FilterReader、FileterWriter
管道字符流:PipedReader、PipedWriter
行處理字符流:LineNumberReader
打印字符流:PrintWriter
類有千萬,方法更是不計其數,所以沒有必要去掌握所有的方法和類,只需要知道常見常用的就行了,而大多數的類和方法,希望大家有一個印象,當我們在實際開發的時間,能夠想到,並且藉助其他工具去查詢我們需要的方法的應用方式就可以了。
歡迎關注微信公衆號:Java的學習之路
裏面資料非常全,從java初級到高級都有,視頻,電子書,面試寶典,簡歷模板,經典案例,源碼分析程序員故事以及解決bug方法。。。。應有盡有,可以推薦大家一起學習下!!