1. 程式人生 > >Java入門第六篇:I/O流

Java入門第六篇:I/O流

進行 spa out tao 基本數據 速度 序列 自帶 緩存對象

[java中的IO流] 分類: 1. 根據流的方向:輸入流和輸出流 根據讀取文字的大小:字節流和字符流; 字節流按字節讀取,讀取中文時會產生亂碼,字符流按字符讀取,通常用於讀取中文。 根據讀取的方式:節點流和緩存流 [BufferedInputStream和....Output..] 新建一個對象,傳入一個文件,這個對象作為緩存流。可以減少文件的讀寫次數,提高讀寫速度。 程序最後,刷新緩存流:bos.fluse(); 緩存區一定要關! bis.close(); bos.close();(會自動刷新緩存流) 緩存流的作用: 將文件對象作為參數傳入緩存對象。 這種寫法,我們稱之為IO鏈,IO關閉時只需要關閉最外層流,內層流將自動關閉。 [DataInputStream類]
用二進制對文件進行讀寫操作,(可讀寫二進制文件、基本fis讀寫可能出現亂碼)。 與基本流相比,可以直接讀寫java中的基本數據類型。 (使用DataOutputStream寫入的文件,只能使用DataInputStream讀 ) 方法.readUTF();可讀取中文。 [ObjectInputStream] 1.與基本流相同,可以直接使用read和writer讀寫; 2.與DataInputStream相同,可以對java基本數據類型進行直接讀寫。 方法.redaInt(); readDouble();等 3.使用可以使用readObject()和writeObject()對對象進行讀寫。  讀寫對象時,一定要對要讀寫的對象類實現序列化。 [對象的序列化和反序列化] 概念: 對象的序列化:將程序中的對象,持久化的保存在文件中的過程。 對象的反序列化:將文件中保存的對象,重新讀取到程序中的過程。 序列化必須對象所屬 的類必須實現serializable接口 當一個實體類,實現可序化接口後,可以it安家一個序列化版本號ID private static final long serialVersionUID = 1L; 添加以後,可以用ID表示序列化和反序列化操作的對象,是同一個對象。 否則序列化之後,如果實體類屬性有刪減,在進行序列化時 系統默認不是同一類,會造成錯誤。 [字符流]
1.在處理數據單元時,以一個字符作為單位; 而字節流,以一個字節作為單位。 2.字符的基類: Reader和Writer 是抽象類 FileReader和FileWriter是直接繼承字抽象類的兩個基本字符流。 3.FileReader和FileWriter只能使用系統使用的編碼格式; 無法指定編碼,如果文件格式與系統默認格式不一樣,那使用這兩個方法讀寫將造成中文亂碼。 [InputStreamReader和OutputStreamWriter] 1.將字節流轉換為字符流,同時支持自定義讀寫的編碼格式; 文件傳入時自帶緩存功能。 2.常見的編碼格式。   ASCII : 美國標準消息碼;   ISO8859-1 : 歐洲碼;   GB2312 : 國標碼;   GBK : 國標擴展碼; ANSI編碼,可以分為很多種;   簡體中文:     GB2312;     GBk;   繁體中文:     BIG-5; Unicode編碼:國際標準碼,兼容絕大部分國家的編碼格式。 可以分為UTF-6,UTF-8,UTF-16。

Java入門第六篇:I/O流