小石頭課堂(三)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