小石頭課堂(三)IO流總結

小石頭課堂(三)IO流總結

   最近學了java  IO流 是個比較繞的東西,有時候很難理清它的頭緒,即使當時清楚了,過一段時間後也會忘記,因此記錄下來IO流中常用的幾個類,以供大家參考,及本人以後複習。嗯 閒話少敘,下面開始:

其實、很多資料上寫java流分爲字節流和字符流,雖然可以方便理解與記憶但是本人覺得那是很無聊的分類,因爲計算機的輸入輸出的一切操作都是轉化爲字節,再轉換成二進制,所以我認爲那樣的分類反而會誤導一些初學者。(也可能是我還沒深入理解所謂專家們分類依據)。而我認爲更好的分類應該是下面這樣的:

一、節點流

包括InputStream/OutputStream最常用的是其實現類: FileInputStream/FileOutputStream(fis/fos)。這個類直接與文件(File)連接,可以一個字節的讀寫,也可以自定義byte[] 數組用來緩衝,多個字節的讀寫 eg:

 

                             

 

 

二、  處理流

處理流需要套在節點流上(除了fr/fw)包括:

DataInputStream/DataOutputStream(dis/dos)

InputStreamReader/OutputStreamWriter(isr/osw)

FileReader/FileWriter(fr/fw)

ObjectInputStream/ObjectOutputStream(ois/oos)

 

 

 

 

 

 

dis是讀java基本數據類型的,它內部會根據調用的方法自動讀取相應個字節的二進制數據,並轉換成要讀的數據類型。

Isr是讀取文本文件時進行字符與字節的轉換的,將二進制數據按照指定的編碼 轉換成相應字符。因此也必須套在節點流並且傳入指定編碼(默認是本地機器的編碼方案)。

 

 

Fr則是爲了方便讀取字符,專門設計的,相當於isr+fis,因此不用套在節點流上,可以直接連接file,但它這樣就不能指定編碼了,只能用默認的編碼方案。

 

Oos則是讀取對象時用的 同樣用法,套在節點流上,(注意對象需要序列化,且注意類型轉換)

 

 

 

三、  緩衝流

緩衝流需要套在節點流上,但一般都是套在處理流上。

BufferedInputStream/ BufferedOutputStream(bis/bos)—》字節

BufferedReader/BufferedWriter(br/bw)—》字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

文件讀寫經典模式:

Bis--fis,必要時bis—dis—fis。

(指定編碼)Br—isr—fis  (不用指定編碼)br—fr

 

以上只是我學習時根據自己的理解總結的一些,有些理解不太準確,各個類型的類也不全面,但記住這些並且熟練應用,相信一般的文件操作應該難不住你了,

學的太多反而會更蒙,不好  。若非要學全就自己去查看api吧 。還是那句話:覺得有用呢就贊一下,加我QQ  共同學習!!!

 

 

 

 

 

 

 

 

本文提供者:懷念@那片藍 QQ448661040

 

  

 

發佈了24 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章