對Java的I O流理解

2021-08-31 05:42:52 字數 2996 閱讀 5381

這是很久前另乙個blog上的,現在不用了。轉過來吧,方便檢視...

輸出流

流程示意圖:

不同的情況: 1.

呼叫 write( )

方法,把資料寫入緩衝區, i

如果緩衝區被填滿,將自動執行2,3

步,把資料轉換為位元組寫入到下乙個緩衝區

(1)如果此緩衝區又被填滿,則自動執行第 4

步,把轉換好的資料儲存到緩衝陣列 ;

(2)如果未被填滿則不會執行第 4

步。 <

將迴圈執行,未寫入的資料來源繼續寫入緩衝區,直到資料被全部寫入 >

ii 如果未被填滿,則不執行2

, 3步。 2.

當出現未被填滿而不傳送的情況,可以呼叫 flush( )

方法進行強制刷出操作。

api 中的一些定義:

bytearrayoutputstream

1. 此類實現了乙個輸出流,其中的資料被寫入乙個byte 陣列。 2.

緩衝區會隨著資料的不斷寫入而自動增長。 3.

可使用tobytearray()tostring()獲取資料。

outputstreamwriter

1. outputstreamwriter

是字元流通向位元組流的橋梁:可使用指定的

charset

將要寫入流中的字元編碼成位元組。 2.

每次呼叫 write()

方法都會導致在給定字元(或字符集)上呼叫編碼轉換器。 3.

傳遞給 write()

方法的字元沒有緩衝。

bufferedwriter

1. 將文字寫入字元輸出流,緩衝各個字元,從而提供單個字元、陣列和字串的高效寫入。

2. 可以指定緩衝區的大小,或者接受預設的大小。

還有就是 flush( )

方法的定義——

1. 重新整理該流的緩衝。 2.

如果該流已儲存緩衝區中各種 write()

方法的所有字元,則立即將它們寫入預期目標。 3.

然後,如果該目標是另乙個字元或位元組流,則將其重新整理。 4.

因此,一次 flush()

呼叫將重新整理 writer

和 outputstream

鏈中的所有緩衝區。*

需要注意的是, bytearrayoutputstream

中的陣列緩衝區初始大小為 32

位元組,隨後會按資料大小自動進行調整。

輸入流

流程示意圖:

1. 把資料來源轉換為位元組陣列; 2.

把轉換好的位元組緩衝陣列作為引數源傳進 bytearrayinputstream

流; 3.

與輸出流不同的是,第 3

, 4, 5

步會自動執行,把陣列傳進下乙個緩衝區; 4.

等到呼叫 read( )

方法,把緩衝中資料讀出 。

api 中的一些定義:

bytearrayinputstream

1.bytearrayinputstream

包含乙個內部緩衝區,該緩衝區包含從流中讀取的位元組。

2. 內部計數器跟 蹤

read

方法要提供的下乙個位元組。

inputstreamreader

1. inputstreamreader

是位元組流通向字元流的橋梁:它使用指定的

charset

讀取位元組並將其解碼為字元。

2.      

每次呼叫inputstreamreader 中的乙個read() 方法都會導致從底層輸入流讀取乙個或多個位元組。

3.      

要啟用從位元組到字元的有效轉換,可以提前從底層流讀取更多的位元組,使其超過滿足當前讀取操作所需的位元組。

bufferedreader

1. 從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。

2. 可以指定緩衝區的大小,或者可使用預設的大小。

close( )

方法——

1. 關閉該流並釋放與之關聯的所有資源。

2. 在關閉該流後,再呼叫 read()

、 ready()

、 mark()

、 reset()

或 skip()

將丟擲 ioexception

3. 關閉以前關閉的流無效。

Java入門學習 自我理解IO流

之前寫了一篇io流,自己都不知道複製的是什麼,決定重新寫一篇,換個方式寫 1 背單詞 從單詞本中讀取單詞每隔2秒輸出到網頁顯示 可以去掉音標顯示 可以改變單詞顯示的速度 可以增加測試的功能 單詞含義可以隨機選4個詞的含義來讓使用者選擇 可以增加標記生詞並記到生詞本中 之後再優化效率,先寫這麼多啦 p...

java的IO流 字元流

reader 是所有的輸入字元流的父類,它是乙個抽象類。reader 中各個類的用途和使用方法基本和inputstream 中的類使用一致。後面會有reader 與inputstream 的對應關係。1 看看幾個常用的實現類 該類從資料來源讀取位元組並將其解碼為使用指定的字符集的字元。inputst...

對於I O流的理解

學習c primer第5版的io流感覺很困惑。後來結合書上的講解想了想,談談自己的理解吧。輸入輸出流就表示一連串的輸入輸出資料。可以把這一連串的資料看做是乙個物件,所以可以用乙個物件表示輸入 輸出流。cin cout cerr clog就是4個用於表示普通流的物件。特別地,cin是表示來自鍵盤的輸入...