java之IO流歸納整理

一.IO流圖示






二:IO流分析


1.如何判斷使用哪種流?

用系統自帶的記事本打開可以讀懂的可以用字符流,讀不懂的只能用字節流。

2.FileReader和InputStreamReader的關係?

FileReader是InputStreamReader的子類,是InputStreamReader的簡化模式。

3.創建字節流對象做了哪些事情呢?

FileOutputStream fos=new FileOutputStream("a.txt");

①調用系統資源創建文件

②創建字節輸出流對象

③讓字節輸出流指向文件

4.爲什麼要關閉流?

①讓對象變成垃圾,方便垃圾回收器回收

②讓系統釋放與該對象相關的資源

5.緩衝區流

緩衝區有大小,存入一定數據,刷新或關閉流的時候會強制一次性寫入數據,避免多次訪問磁盤,提高效率。

6.字符流=字節流+編碼,字符流本質是包裝了字節流。

7.內存操作流

內存操作流一般用於處理臨時信息,因爲臨時信息不需要保存,使用後就可以刪除,底層是數組。

8.打印輸出流

①只能寫不能讀,用自動刷新功能(帶自動刷新的打印流必須使用println方法),可以操作基本流,也可以操作高效流。

②println方法相當於readLine()、Write()、newLine()的功能。

9.標準輸入輸出流

System的成員變量in、out分別代表標準輸入流和標準輸出流。默認輸入設備是鍵盤,默認輸出設備是顯示器(其實就是控制檯).

10.RandomAccessFile隨機訪問流

①其實隨機訪問流不是流,只是融合了InputStream和OutputStream的功能,可寫可讀。此類的實例支持對隨機訪問文件的讀取和寫入。訪問模式常用"rw" ,打開以便讀取和寫入。若文件不存在,則創建文件。

②隨機訪問流的public long getFilePointer()throws IOException方法可以獲取當前數據的指針。

11.合併流SequenceInputStream和SequenceOutputStream

合併流可以把多個文件內容合併在一起。

構造方法1:SequenceInputStream(InputStream s1, InputStream s2)這個只能合併2個文件

構造方法2:SequenceInputStream(Enumeration<? extends InputStream> e)這個構造方法可以合併多個文件,只要給參爲Enumeration的實現類就行。

①可以用創建元素爲InputStream的Vector集合 Vector<InputStream> v = new Vector<>();根據多態把元素(文本)添加到集合

②調用Vector集合的方法public Enumeration<E> elements()返回的是Enumeration

③創建SequenceOutputStream流,然後讀寫就行.

12.序列化流ObjecIntputStream和ObjectOutputStream

序列化:   把對象像流一樣在文本文件或者網絡中存儲 (一般的格式是與平臺無關的二進制流)對象-----流數據
反序列化:   把文本文件中的流對象或者網絡的流對象還原成對象 流數據-----對象

①序列化的類要實現Serializable接口,Serializable接口是標記接口,沒有方法,只有實現這個序列化標記接口才能實現序列化或者反序列化。

②transient關鍵字,加了這個關鍵字後不能序列化。


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