Java基礎學習I/O系統---輸入流和輸出流

  在網上看到Java的I/O,心中想:以前學過嗎?而且聽說,這個東西對於從事Java行業的人來說有特別的重要。壓抑不住一隻小白(我)的心理,來了解一下Java的I/O。

我在網上隨便找了一本書,來看一下Java對於I/O的處理。

這裏主要講的是輸入流和輸出流,輸出流和輸入流是相對於程序本身而言的。程序讀取數據稱爲打開輸入流,程序向其他源寫入數據稱爲打開輸出流。看圖:

注:(大神忽略)開始我也不是特別明白這是什麼意思,(以程序爲主語)程序讀進入程序的數據是輸入流,程序向外輸出數據即打開了輸出流,輸出流。

在java.io包中有各種I/O流類,這裏按照輸入輸出流處理的 不 同 數 據 類 型 對流進行分類,即字符(Character)流和字節(Byte)流。

1.字符流(16bit):

在Java的I/O系統提供了InputStream和OutputStream兩個抽象類實現字節(8位)數據的輸入/輸出。其中InputStream是輸入流的抽象類,提供了read()方法,每個實現了該類的子類都要實現該方法。

輸入流類:InputStream是一個抽象類,提供了抽象的read()方法。 輸出流類:OutputStream 提供了write()方法,同樣也是一個抽象類。

注:每個抽象類都有多個類繼承,複寫提供的方法,可以在api文檔java.io中找到,節省篇幅,不予寫出。

2.字節流(8bit):

字節流也分爲讀流數據類和寫流數據類,即Reader類和Writer類及其子類。Writer類是字符(Character)流輸出類的父類,它是抽象類,所有繼承自該類的子類都必須實現抽象方法write(),具體的實現類中write()方法的使用可以參考相應的JavaDoc文檔。這裏爲了區別InputStream和OutputStream使用了Reader和Writer,爲了使讀者習慣於使用Reader和Writer,並且中文中沒有合適的詞彙表達相應的流的概念,所以不再具體翻譯爲中文,使用時只要知道Reader類負責讀流數據,而Writer類負責向流中寫數據即可。

Write和Read都有多個類繼承了他們。

a.Writer:繼承自Writer類

BufferedWriter(帶緩衝的Writer)

CharArrayWriter(字符數組Writer)

FilterWriter(帶過濾器Writer)

PrintWriter(打印Writer)

PipedWriter(管道Writer)

StringWriter(字符串Writer)

OutputStreamWriter  (輸出流Writer)   ,      FilerWriter(文件Writer)繼承OutputStreamWriter 。


b.繼承自Reader類

BufferedReader

CharArrayReader(字符數組Reader)

FileReader

InputerStreamReader

FiterReader

LineNumberReader(帶行號Reader)

PipedReader

PushbackReader(推回Reader)

StringReader



接着在這說一下在網上看到的同時也解決了我的疑惑:

不管是磁盤還是網絡傳輸,最小的存儲單元都是字節,而不是字符,所以 I/O 操作的都是字節而不是字符,但是爲啥有操作字符的 I/O 接口呢?這是因爲我們的程序中通常操作的數據都是以字符形式,爲了操作方便當然要提供一個直接寫字符的 I/O 接口。


依據《Java:從入門到精通》這本書所寫,有興趣的可取看一下(大神無視就可以)

本人java初學者,肯定有寫的不規範的地方還請指正( ⊙ o ⊙ )

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