java中的IO各種讀寫流的學習
過濾流和包裝類
一、過濾流:使用節點流作為輸入或輸出。過濾流是使用一個已經存在的輸入流或輸出流連線建立的。
二、包裝類:所謂包裝類,就是可以直接將簡單型別的變量表示為一個類,在執行變數型別的相互轉換時,我們會大量使用這些包裝類。Java共有六個包裝類,分別是Boolean、Character、Integer、Long、Float和Double,從字面上我們就可以看出它們分別對應於 boolean、char、int、long、float和double。而String和Date本身就是類。所以也就不存在什麼包裝類的概念了。
三、BufferedInputStream和BufferedOutputStream,過濾流,需要使用已經存在的節點流來構造,提供帶緩衝的讀寫,提高了讀寫的效率。
a) 緩衝流為IO流增加了記憶體緩衝區,增加緩衝區有兩個基本目的:
i. 允許Java程式一次不止操作一個位元組,提高了程式的效能
ii. 由於有了緩衝區,使得在流上執行skip,mark和reset方法都成為可能
b) BufferedInputStream與BufferedOutputStream是Java提供的兩個緩衝區包裝類,不管底層系統是否使用了緩衝區,這兩個類在自己的例項物件中建立緩衝區。
四、DataInputStream和
a) public final void writeBytes(String s)//將每個位元組寫入目標裝置中
b) public final void writeChars(String s)//將每個字元寫入到目標設
c) public final void writeUTF(String str)//將字串按照UTF的編碼寫入到目標裝置,目標裝置帶有長度頭
五、 PrintStream類
PrintStream類提供了一系列的print和println方法,可以將基本資料型別的資料格式化成字串輸出
六、ObjectInputStream與ObjectOutputStream類
ObjectInputStream與ObjectOutputStream這兩個包裝類,用於從底層輸入流中讀取物件型別的資料和將物件型別的資料寫入到底層輸出流。
這兩個類所讀寫的物件必須實現了Serializable介面。物件中的translent和static型別的成員變數不會被讀取和寫入。
七、位元組流與字元流的轉換:InputStreamReader和OutputStreamWriter類
InputStreamReader和OutputStreamWriter是用於將位元組流轉換成字元流來讀寫的兩個類。InputStreamReader可以將一個位元組流中的位元組解碼成字元後讀取,OutputStreamWriter將字元編碼成位元組後寫入到一個位元組流中。
八、BufferedReader和BufferedWriter類
BufferedReader的readLine方法可以一次讀取一行文字,BufferedWriter的newLine方法可以同字元流中寫入不同作業系統下的換行符