標籤:
一、Java I/O系統的定義:統一放在Java.io包和Java.nio包中的類。
1, 流<stream>的概念:當程式需要讀取資料的時候,就會開啟 一個通向源裝置的流,這個資料來源裝置可以是檔案,記憶體和網路連接。
2,流的基本特性:流質和方向。
3,流的分類:
a 按資料流的方向分:輸入資料流(從資料來源讀取資料到程式中,io包中的輸入資料流都繼承自InputStream或Reader。);
輸出資料流(將資料從程式寫入資料目的地,io包中的輸出資料流都繼承自OutputStream或Writer。)
b 按處理資料的最小單位的不同分:位元組流(最小單位是byte,io包中的位元組流都繼承自抽象類別InputStream或OutputStream。);
字元流(最小單位是char,io包中的位元組流都繼承自抽象類別Reader或Writer。)
註:讀寫文字型的資料時通過字元流更有效率,更方便。
c 按照流的功能分:節點流<低級流>(可以直接向一個特定的資料來源讀或寫資料的流);
處理流<進階流>(不直接連接到裝置,而是串連在已存在的流<節點流或處理流>之上)
註:所有I/O類中的具體類都繼承自四個抽象類別:InputStream,OutputStream,Reader,Writer。
二、所有I/O操作的步驟:
1,建立流
2、操作流
3、關閉流
三、檔案類(File)可以操作檔案,但它不是流,它不能操作檔案的內容。
四、位元組流:用於處理二進位檔案。
1、進階位元組流:
a、按功能分:
過濾流類(緩衝流,資料流,計數,推回輸入資料流,列印輸出資料流);
物件流程(序列化,還原序列化);
註:為了實現對象序列化,對應的類必須實現java.io.serializable介面;transient所修飾的屬性不能被序列化。
合并;
字元流;
五、可用以下方法解決,transient所修飾的屬性不能被序列化的問題:
第一步:
public void readObject(java.io.ObjectInputStream in)throws IOException,classNotFoundException{
//內容
}
第二步:
public void writeObject(java.io.ObjectOutputStream out)throws IOException{
//內容
}
JAVA I/O系統