天天看點

Java基礎知識回顧--IO流

按資料流的方向不同可以分為輸入流和輸出流。

按處理資料機關不同可以分為位元組流和字元流。

按照功能不同可以分為節點流和處理流。

上來就是這樣的管道。現在來細細了解一下,如果一根管道怼到一個檔案上讀資料,站在檔案的角度上這叫輸出,站在程式的角度上這就叫輸入。以後說輸入流輸出流都是站在程式的角度上。節點流就是流直接怼在資料源上,套在其他管道之上的流叫處理流。

//将輸出流中緩沖的資料全部寫到目的地,這個就避免還有一半沒寫完的時候流被close掉

void flush() throws ioexception

Java基礎知識回顧--IO流
Java基礎知識回顧--IO流

這裡值得注意的是一個中文是兩個位元組是以如果用位元組流讀中文肯定是亂碼。下面看一個用得較多的bufferreader和bufferwriter的例子小程式,深入了解一下管道套管道的機制并熟悉常見的用法。

位元組流轉換字元流

下面也是一個轉換的例子,是讀鍵盤輸入,比scaner好用一點。

datainputstream和dataoutputstream是處理流需要套在inputstream和outputstream上使用,它提供了可以存取與機器無關的java原始類型資料。

Java基礎知識回顧--IO流

仔細看圖就能明白datainputstream和dataoutputstream的用法和注意點,而且在記憶體中是怎麼分布的也可以弄清楚。

print流

Java基礎知識回顧--IO流

這裡值得注意的是setout之後system.out.print不在輸出到螢幕而是指向ps,輸入進了檔案。

object流

Java基礎知識回顧--IO流

序列化去實作serializable 接口,如果想控制我們的對象怎麼去寫過去的就去實作externalizable接口,它是serializable的子接口,去實作它兩個方法,自己可以控制自己的序列化過程。