IO流 簡單總結概述

2021-08-17 08:39:02 字數 2660 閱讀 1764

重新深入的學習了io流,將之前沒搞懂的地方搞懂,這一篇旨在幫助大家理清io流初始的結構體系。

什麼是流。

流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱和抽象。即資料在兩個裝置間的傳輸成為流,其本質就是資料傳輸。在根據資料傳輸特性將流抽象為各種類。

2.流的分類。

根據處理資料型別的不同:字元流(其實就是位元組流加編碼表)和位元組流。  位元組流和字元流的區別:

根據資料流向的不同:輸入流和輸出流。無碼首先要明確的一點,輸入和輸出是對誰而言的?就是相對程式而言,也可以理解為記憶體,就是記憶體從外部(硬碟)讀取資料。而輸出就是,記憶體向硬碟中寫入資料。

3.位元組流

從輸入位元組流的繼承圖可以看出:inputstream 是所有的輸入位元組流的父類,它是乙個抽象類。

bytearrayinputstream、stringbufferinputstream、fileinputstream 是三種基本的介質流,它們分別從byte 陣列、stringbuffer、和本地檔案中讀取資料。

pipedinputstream 是從與其它執行緒共用的管道中讀取資料,與piped 相關的知識後續單獨介紹。

objectinputstream 和所有filterinputstream的子類都是裝飾流(裝飾器模式的主角)。意思是fileinputstream類可以通過乙個string路徑名建立乙個物件,fileinputstream(string name)。

datainputstream必須裝飾乙個類才能返回乙個物件,datainputstream(inputstream in)。 

private static void demoread()throws ioexception 

}

io 中輸出位元組流的繼承圖可見上圖,可以看出:outputstream 是所有的輸出位元組流的父類,它是乙個抽象類。

bytearrayoutputstream、fileoutputstream是兩種基本的介質流,它們分別向byte 陣列、和本地檔案中寫入資料。

pipedoutputstream 是向與其它執行緒共用的管道中寫入資料,

objectoutputstream 和所有filteroutputstream的子類都是裝飾流。具體例子跟inputstream是對應的。

3.字元流常用操作。

reder:

在上面的繼承關係圖中可以看出:reader 是所有的輸入字元流的父類,它是乙個抽象類。

charreader、stringreader是兩種基本的介質流,它們分別將char 陣列、string中讀取資料。

pipedreader 是從與其它執行緒共用的管道中讀取資料。

bufferedreader 很明顯就是乙個裝飾器,它和其子類負責裝飾其它reader 物件。

filterreader 是所有自定義具體裝飾流的父類,其子類pushbackreader 對reader 物件進行裝飾,會增加乙個行號。

inputstreamreader 是乙個連線位元組流和字元流的橋梁,它將位元組流轉變為字元流。filereader可以說是乙個達到此功能、常用的工具類,在其源**中明顯使用了將fileinputstream 轉變為reader 的方法。

filereader fwfilereader=new filereader("wujie2.txt");

//取出的是二進位制

char buf=new char[3];

int num=0;

while((num=fwfilereader.read(buf))!=-1)

fwfilereader.close();

writer:

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...