IO流加強 總結 IO流總結和練習

2021-07-29 22:40:36 字數 4482 閱讀 4320

1.流都是用來傳輸資料的。

2.傳輸資料時,一定要明確資料來源和資料目的地(資料匯)

3.資料來源可以是檔案、鍵盤和其他流。

4.資料目的地可以是檔案、顯示器或者其他流。

5,流只是幫助資料進行傳輸,可以在傳輸資料的時候進行處理。比如過濾處理、轉換處理等。

使用要點:看頂層(字元流還是位元組流,父類公共性功能),

用底層(in,out或者其他子類具體物件)

io流的命名規律

1.每個子類的字尾名都是所屬體系的父類的名稱(***stream,***reader).容易區分所屬體系

2.每個子類字首名都是該子類的具體實現功能。

(objectinputstream )

io流的操作規律

1.明確源和目的:

源:inputsteam reader 一定是讀取進來到程式

目的:outputsteam writer 一定是從程式寫出去

2.處理資料是否為純文字的資料?

是: 使用字元流 ,reader writer

否: 使用位元組流 inputstream, outputsteam

(到這裡,兩個明確確定完,就可以確定出要使用哪個體系。接下來,就應該明確具體這個體系要使用哪個具體的物件。(看頂層))

3.明確資料所在裝置

(到這裡,具體使用哪個物件就可以明確了。(用底層))
4.明確資料是否需要額外功能

(到這裡,具體的設計方案就可以明確了。(套接與功能加強)))

另外:如果資料有規律,並且源和目的都是file,需要隨機訪問時,可以使用randomaccessfile工具類。

明確資料所在的裝置

源裝置顯示器(控制台system.out)

硬碟(file***)filewriter fileoutputstream

記憶體(陣列)bytearrayoutputstream chararraywriter stringwriter

網路(socket)

目的裝置

顯示器(控制台system.out)

硬碟(file***)filewriter fileoutputstream

記憶體(陣列)bytearrayoutputstream chararraywriter stringwriter

網路(socket)

明確是否需要額外功能?

1) 是否需要高效?緩衝區buffered (字元與位元組各兩個)。

2) 是否需要轉換?轉換流 inputstreamreader outputstreamwriter

3) 是否操作基本資料型別? datainputstream dataoutputstream

4) 是否操作物件(物件序列化)? objectinputstream objectoutputstream

5) 需要對多個源合併嗎? sequenceinutstream

6) 需要保證資料的表現形式到目的地嗎? printstrertwriter

練習1. 複製乙個文字檔案

1.判斷是否為文字檔案

源:reader

目的:writer

2.明確資料所在裝置

源:file(硬碟)

目的:file(硬碟)

filereader fr = new filereader("a.txt");

filewriter fw = new filewriter("b.txt");

3、明確是否需要額外功能?

bufferedreader bufr = new bufferedreader(new filereader("a.txt"));

bufferedwriter bufw = new bufferedwriter(new filewriter("b.txt"));

練習2. 複製乙個檔案

1.判斷是否為文字檔案

源:inputstream 目的:outputstream

2.明確資料所在裝置

源:file(硬碟)

目的:file(硬碟)

fileoutputstream fout = new fileoutputstrema("2.jpg");3、明確是否需要額外功能?

```bufferedinputstream bufin = new bufferedinputstream( fin );

bufferedoutputstream bufout = new bufferedoutputstream( fout );

練習3. 讀取鍵盤錄入,儲存到乙個檔案中

1.判斷是否為文字檔案

源:reader 目的:writer

2.明確資料所在裝置

源:鍵盤

目的:file(硬碟)

inputstream in = system.in;

filewriter fw = new filewriter("a.txt");

必須要將鍵盤錄入的位元組轉成字元。

需要將位元組–>字元的轉換流。inputstreamreader

還想需要高效。

3、明確是否需要額外功能?

inputstreamreader isr = new inputstreamreader(system.in);

filewriter fw = new filewriter("a.txt");

bufferedreader bufr = new bufferedreader( isr);

bufferedwriter bufw = new bufferedwriter( fw );

練習4. 讀取乙個文字檔案,顯示到顯示器上。

1.判斷是否為文字檔案

源:reader 目的:writer

2.明確資料所在裝置

源:硬碟

目的:顯示器

filereader fr = new filereader("a.txt");

outputstream out = system.out;

要將字元資料轉換成位元組輸出。

輸出轉換流:outputstreamwriter

還想需要高效。

3、明確是否需要額外功能?

filereader fr = new filereader("a.txt");

outputstreamwriter osw = new outputstreamwriter(system.out);

bufferedreader bufr = new bufferedreader( fr);

bufferedwriter bufw = new bufferedwriter( osw );

練習5. 讀取乙個文字檔案,將文字按照指定的編碼表utf-8寫入到另乙個檔案中

1.判斷是否為文字檔案

源:reader

目的:writer

2.明確資料所在裝置

源:file(硬碟)

目的:file(硬碟)

filereader fr = new filereader("a.txt");

fileoutputstream fout = new fileoutputstream("b.txt");

假定輸出時要為字元資料指定編碼表。轉換流中的引數需要位元組流,因此用fileoutputstream。

轉換流:outputstreamwriter,還想需要高效

3、明確是否需要額外功能?

filereader fr = new filereader("a.txt");

outputstreamwriter osw = new outputstreamwriter(fout,」utf-8」);

bufferedreader bufr = new bufferedreader( fr);

bufferedwriter bufw = new bufferedwriter( osw );

IO流 字元流 IO流小結 IO流案例總結

1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...

Io流和操作總結

位元組流 inputstream 位元組輸入流的超類。它中定義的讀取位元組的read方法 fileinputstream 專門負責從檔案中讀取位元組資料。bufferedinputstream 位元組輸入流的緩衝區。outputstream 位元組輸出流的超類。定義類的寫位元組的資料的write方法...

Io流小總結

通過資料流 序列化和檔案系統提供系統輸入和輸出。2.i input 輸出 將資料來源讀到記憶體中 o output 輸出 將記憶體資料寫到硬碟中。資料流 流 就像一根管道,資料在管道中的走向就叫資料流。作用 用來處理裝置之間的資料傳輸。電腦中檔案的展示形式 檔案和資料夾 操作方式 讀和寫 位元組流 ...