這是很久前另乙個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是表示來自鍵盤的輸入...