1. 程式人生 > >java中的IO各種讀寫流的學習

java中的IO各種讀寫流的學習

                                        過濾流和包裝類

一、過濾流:使用節點流作為輸入或輸出。過濾流是使用一個已經存在的輸入流或輸出流連線建立的。 

二、包裝類:所謂包裝類,就是可以直接將簡單型別的變量表示為一個類,在執行變數型別的相互轉換時,我們會大量使用這些包裝類。Java共有六個包裝類,分別是BooleanCharacterIntegerLongFloatDouble,從字面上我們就可以看出它們分別對應於 booleancharintlongfloatdouble。而StringDate本身就是類。所以也就不存在什麼包裝類的概念了。

三、BufferedInputStreamBufferedOutputStream,過濾流,需要使用已經存在的節點流來構造,提供帶緩衝的讀寫,提高了讀寫的效率。

a) 緩衝流為IO流增加了記憶體緩衝區,增加緩衝區有兩個基本目的:

i. 允許Java程式一次不止操作一個位元組,提高了程式的效能

ii. 由於有了緩衝區,使得在流上執行skipmarkreset方法都成為可能

b) BufferedInputStreamBufferedOutputStreamJava提供的兩個緩衝區包裝類,不管底層系統是否使用了緩衝區,這兩個類在自己的例項物件中建立緩衝區。

四、DataInputStream

DataOutputStream,過濾流,需要使用已經存在的節點流來構造,提供了讀寫Java中的基本資料型別的功能。

a) public final void writeBytes(String s)//將每個位元組寫入目標裝置中

b) public final void writeChars(String s)//將每個字元寫入到目標設

c) public final void writeUTF(String str)//將字串按照UTF的編碼寫入到目標裝置,目標裝置帶有長度頭

五、 PrintStream
    PrintStream類提供了一系列的printprintln方法,可以將基本資料型別的資料格式化成字串輸出

,對於非基本資料型別先用呼叫物件的toString()然後打印出來。

六、ObjectInputStreamObjectOutputStream
    ObjectInputStreamObjectOutputStream這兩個包裝類,用於從底層輸入流中讀取物件型別的資料和將物件型別的資料寫入到底層輸出流。
    這兩個類所讀寫的物件必須實現了Serializable介面。物件中的translentstatic型別的成員變數不會被讀取和寫入。

七、位元組流與字元流的轉換:InputStreamReaderOutputStreamWriter
    InputStreamReaderOutputStreamWriter是用於將位元組流轉換成字元流來讀寫的兩個類。InputStreamReader可以將一個位元組流中的位元組解碼成字元後讀取,OutputStreamWriter將字元編碼成位元組後寫入到一個位元組流中

八、BufferedReaderBufferedWriter
BufferedReaderreadLine方法可以一次讀取一行文字,BufferedWriternewLine方法可以同字元流中寫入不同作業系統下的換行符