IO流學習總結

字符流、字節流的兩個頂層父類:

1.字符流:Reader、Writer

2.字節流:InputStream、OutputStream


下面圖片爲IO常用流之間的關係:(還有部分流沒寫,有興趣的自己研究)

----------------------------------------------------------------------------------------------------------

IO中的流那麼多,我們該用什麼流進行開發呢?

其實掌握IO流規律就行了:

1,明確源和目的(匯)
源:InputStream Reader
目的:OutputStream Writer


2,明確數據是否是純文本數據。
源:是純文本:Reader
否:InputStream
目的:是純文本 Writer
否:OutputStream


到這裏,就可以明確需求中具體要使用哪個體系。


3,明確具體的設備。
源設備:
硬盤:File
鍵盤:System.in
內存:數組
網絡:Socket流


目的設備:
硬盤:File
控制檯:System.out
內存:數組
網絡:Socket流


4,是否需要其他額外功能。
1,是否需要高效(緩衝區);
是,就加上buffer
2,轉換。
便於操作


----------------------------------------------------------------------------------------------------------------------

需求1:將e:盤下的mv複製到d:盤

分析:

1.明確源和目的(匯)

Inputstream OutputStream

2.明確數據是否是純文本數據

Inputstream OutputStream

3.明確具體的設備。

源:硬盤File               目的:硬盤File

4.是否要其他功能

要高效   buffer

BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(("e:\\全世界誰傾聽你.mkv"));

BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(("d:\\全世界誰傾聽你.mkv")));

int len = 0;

while((len = bufis.read())!=-1){

bufos.write(len);

}

bufos.close();
bufis.close();


2.需求2:在控制檯輸入,打印到e:demo.txt文件中

分析:

1.明確源和目的(匯)

Inputstream OutputStream

2.明確數據是否是純文本數據

Inputstream OutputStream

3.明確具體的設備。

源:控制檯system.in              目的:硬盤File

4.是否要其他功能

要高效   buffer

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileInputStream("e:b.txt")));

while((line=bfr.readLine())!=null){
if("over".equals(line)){
break;
}
bfw.write(line.toUpperCase());
bfw.newLine();
bfw.flush();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章