Java的IO流

流的分類:

 

IO流指的是輸入輸出流,用來處理設備上的數據,這裏的設備指硬盤、內存、鍵盤錄入、網絡傳輸等。

1) 根據數據的流向來分:

輸出流:是用來寫數據的,是由程序(內存)--->外界設備。

輸入流:是用來讀數據的,是由外界設備--->程序(內存)。

 

2) 根據流數據的格式來分:

字節流:處理聲音或者圖片等二進制的數據的流,比如 InputStream;

字符流:處理文本數據(如txt文件)的流,比如 InputStreamReader ;

 

3) 根據流數據的包裝過程來分:

節點流:又稱爲低級流,特點是:數據源明確,真實負責讀寫數據的流。

處理流:又稱爲高級流,特點是:不能單獨存在(沒意義),用來處理其他流,所有高級流都封裝了某些特定功能的讀寫操作,目的是簡化我們的讀寫操作具體的流。

 

1) 字節流:

InputStream 與 OutputStream;

InputStream 是所有字節輸入流父類,其定義了基礎的讀取方法

OutputStream 是所有字節輸出流父類,其定義了基礎的寫出方法;

包含:

 1、文件流:FileOutputStream 是文件的字節輸出流,我們使用該流可以以字節爲單位將數據寫入文件(默認覆蓋模式,第二個參數設施爲 true 可改變爲追加模式)。FileInputStream 是文件的字節輸入流,我們使用該流可以以字節爲單位讀取文件內容。

2、緩衝流:BufferedOutputStream 緩衝字節輸出流,需使用flush方法將緩存的字節寫出或者在關閉流時一次性寫出。BufferedInputStream 是緩衝字節輸入流。

3、對象流:ObjectOutputStream 是用來對對象進行序列化的輸出流。ObjectInputStream 是用來對對象進行反序列化的輸入流。

 

2) 字符流:

Reader 和 Writer;

Reader 是所有字符輸入流的父類。

Writer 是所有字符輸出流的父類。

字符流是以字符 (char) 爲單位讀寫數據的。一次處理一個 unicode。字符流都是高級流,其底層都是依靠字節流進行讀寫數據的。

包含:

轉換流:

InputStreamReader:字符輸入流,使用該流可以設置字符集

OutputStreamWriter:字符輸出流,使用該流可以設置字符集

 

字符緩衝流:

PrintWriter 具有自動行刷新的緩衝該字符輸出流,需第二個參數設置爲 true。

BufferedReader 是緩衝字符輸入流;

 

注:PrintWriter 寫出字符串時我們通常不使用 Writer 提供的 write( ) 相關方法,而是使用重載的 print 和println 方法。

BufferedReader 讀取字符串時可以使用 readLine( ) 連續讀取一行字符串,直到讀取到換行符爲止,返回的字符串中不包含該換行符,未讀到返回 null。

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