重新深入的學習了io流,將之前沒搞懂的地方搞懂,這一篇旨在幫助大家理清io流初始的結構體系。
什麼是流。
流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱和抽象。即資料在兩個裝置間的傳輸成為流,其本質就是資料傳輸。在根據資料傳輸特性將流抽象為各種類。
2.流的分類。
根據處理資料型別的不同:字元流(其實就是位元組流加編碼表)和位元組流。 位元組流和字元流的區別:
根據資料流向的不同:輸入流和輸出流。無碼首先要明確的一點,輸入和輸出是對誰而言的?就是相對程式而言,也可以理解為記憶體,就是記憶體從外部(硬碟)讀取資料。而輸出就是,記憶體向硬碟中寫入資料。
3.位元組流
從輸入位元組流的繼承圖可以看出:inputstream 是所有的輸入位元組流的父類,它是乙個抽象類。
bytearrayinputstream、stringbufferinputstream、fileinputstream 是三種基本的介質流,它們分別從byte 陣列、stringbuffer、和本地檔案中讀取資料。
pipedinputstream 是從與其它執行緒共用的管道中讀取資料,與piped 相關的知識後續單獨介紹。
objectinputstream 和所有filterinputstream的子類都是裝飾流(裝飾器模式的主角)。意思是fileinputstream類可以通過乙個string路徑名建立乙個物件,fileinputstream(string name)。
datainputstream必須裝飾乙個類才能返回乙個物件,datainputstream(inputstream in)。
io 中輸出位元組流的繼承圖可見上圖,可以看出:outputstream 是所有的輸出位元組流的父類,它是乙個抽象類。private static void demoread()throws ioexception
}
bytearrayoutputstream、fileoutputstream是兩種基本的介質流,它們分別向byte 陣列、和本地檔案中寫入資料。
pipedoutputstream 是向與其它執行緒共用的管道中寫入資料,
objectoutputstream 和所有filteroutputstream的子類都是裝飾流。具體例子跟inputstream是對應的。
3.字元流常用操作。
reder:
在上面的繼承關係圖中可以看出:reader 是所有的輸入字元流的父類,它是乙個抽象類。
charreader、stringreader是兩種基本的介質流,它們分別將char 陣列、string中讀取資料。
pipedreader 是從與其它執行緒共用的管道中讀取資料。
bufferedreader 很明顯就是乙個裝飾器,它和其子類負責裝飾其它reader 物件。
filterreader 是所有自定義具體裝飾流的父類,其子類pushbackreader 對reader 物件進行裝飾,會增加乙個行號。
inputstreamreader 是乙個連線位元組流和字元流的橋梁,它將位元組流轉變為字元流。filereader可以說是乙個達到此功能、常用的工具類,在其源**中明顯使用了將fileinputstream 轉變為reader 的方法。
writer:filereader fwfilereader=new filereader("wujie2.txt");
//取出的是二進位制
char buf=new char[3];
int num=0;
while((num=fwfilereader.read(buf))!=-1)
fwfilereader.close();
public static void main(string args) throws ioexception
public static void main(string args) throws ioexception
轉換流:inputstreamreader/outputstreamwriter
轉換流的特點:
(1)其是字元流和位元組流之間的橋梁
(2)可對讀取到的位元組資料經過指定編碼轉換成字元
(3)可對讀取到的字元資料經過指定編碼轉換成位元組
何時使用轉換流?
當位元組和字元之間有轉換動作時;
流操作的資料需要編碼或解碼時,如果操作文字檔案需要明確具體的編碼解碼。filewriter和filereader就不行了,因為他們用的是預設的編碼表。
public static void writetext_3() throws ioexception
public static void readtext_2() throws ioexception, filenotfoundexception
當需要使用緩衝流的時候;
public static void main(string args) throws ioexception
}
io流的簡單總結
資料流分為輸入流 inputstream 和輸出流 outputstream inputstream屬於位元組輸入類,system.in 作為位元組輸入流類inputstream 的物件in 實現標準的輸入,其中有read方法從鍵盤接收資料 inputstream的子類fileinputstream...
io流的簡單總結
資料流分為輸入流 inputstream 和輸出流 outputstream inputstream屬於位元組輸入類,system.in 作為位元組輸入流類inputstream 的物件in 實現標準的輸入,其中有read方法從鍵盤接收資料 inputstream的子類fileinputstream...
IO流 字元流 IO流小結 IO流案例總結
1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...