第五節 java 字符流

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方法。。。。應有盡有,可以推薦大家一起學習下!!

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