黑馬程序員:Java基礎總結----IO(Input Output)流概述

黑馬程序員:Java基礎總結



IO(Input Output)流概述

 ASP.Net+Android+IO開發.Net培訓、期待與您交流!




  IO(Input Output)流概述

 通過數據流、序列化和文件系統提供系統輸入和輸出。 


流按操作數據分爲兩種:字節流與字符流 。

流按流向分爲:輸入流,輸出流。



IO流常用基類

字節流的抽象基類:

InputStream 此抽象類是表示字節輸入流的所有類的超類。
OutputStream 此抽象類是表示輸出字節流的所有類的超類。


字符流的抽象基類:

Reader 用於讀取字符流的抽象類。
Writer 寫入字符流的抽象類。


他們都是抽象類,要new 就必須有匿名內部類實現相應方法:
            InputStream inputStream = new InputStream() {
                  
                   @Override
                   public int read() throws IOException {
                         // TODO Auto-generated method stub
                         return 0;
                  }
            };

注:由這四個類派生出來的子類名稱都是 以其父類名作爲子類名的後綴。

字節流已知子類(以inputStream部分爲例)

FileInputStream FileInputStream 從文件系統中的某個文件中獲得輸入字節。
BufferedInputStream BufferedInputStream 爲另一個輸入流添加一些功能,即緩衝輸入以及支持 mark 和 reset 方法的能力。
ObjectInputStream ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基本數據和對象進行反序列化。
PipedInputStream 管道輸入流應該連接到管道輸出流;管道輸入流提供要寫入管道輸出流的所有數據字節。
DataInputStream 數據輸入流允許應用程序以與機器無關方式從底層輸入流中讀取基本 Java 數據類型。
ByteArrayInputStream ByteArrayInputStream 包含一個內部緩衝區,該緩衝區包含從流中讀取的字節。

不常用
FilterInputStream FilterInputStream 包含其他一些輸入流,它將這些流用作其基本數據源,它可以直接傳輸數據或提供一些額外的功能。
PushbackInputStream PushbackInputStream 爲另一個輸入流添加性能,即“推回 (push back)”或“取消讀取 (unread)”一個字節的能力。
SequenceInputStream SequenceInputStream 表示其他輸入流的邏輯串聯。


字符流已知子類(以reader部分爲例)

FileReader 用來讀取字符文件的便捷類。
BufferedReader 從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取。
LineNumberReader 跟蹤行號的緩衝字符輸入流。

不常用
CharArrayReader 此類實現一個可用作字符輸入流的字符緩衝區。
FilterReader 用於讀取已過濾的字符流的抽象類。
PipedReader 傳送的字符輸入流。
PushbackReader 允許將字符推回到流的字符流 reader。
StringReader 其源爲一個字符串的字符流。


字節流與字符流間已知橋樑
InputStreamReader InputStreamReader 是字節流通向字符流的橋樑:它使用指定的 charset 讀取字節並將其解碼爲字符。
OutputStreamWriter OutputStreamWriter 是字符流通向字節流的橋樑:可使用指定的 charset 將要寫入流中的字符編碼成字節。

IO流中直屬於obj的類
File 文件和目錄路徑名的抽象表示形式。
RandomAccessFile 此類的實例支持對隨機訪問文件的讀取和寫入。該類只能操作文件


IO程序的書寫

導入IO包中的類--------進行IO異常處理-------- 在finally中對流進行關閉

流操作規律:
明確源和目的:

數據源:讀取,InputStream和Reader

目的:寫入:OutStream和Writer

數據是否是純文本:

是:字符流,Reader,Writer

否:字節流,InputStream,OutStream

明確數據設備:

源設備:內存、硬盤、鍵盤

目的設備:內存、硬盤、控制檯

是否提高效率:用BufferedXXX

源設備,
     鍵盤 System.in,硬盤 FileStream,內存 ArrayStream。
目的設備:
     控制檯 System.out,硬盤FileStream,內存 ArrayStream





 ASP.Net+Android+IO開發.Net培訓、期待與您交流!

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