-
1 # 使用者1740119262927
-
2 # 使用者8217548030593
Java.io包中包括許多類提供許多有關檔案的各個方面操作。
1 輸入輸出抽象基類InputStream/OutputStream ,實現檔案內容操作的基本功能函式read()、 write()、close()、skip()等;一般都是創建出其派生類物件(完成指定的特殊功能)來實現檔案讀寫。在檔案讀寫的程式設計過程中主要應該注意異常處理的技術。
2 FileInputStream/FileOutputStream:
用於本地檔案讀寫(二進位制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的檔案流物件);
本地檔案讀寫程式設計的基本過程為:
① 生成檔案流物件(對檔案讀操作時應該為FileInputStream類,而檔案寫應該為FileOutputStream類);
② 呼叫FileInputStream或FileOutputStream類中的功能函式如read()、write(int b)等)讀寫檔案內容;
3 PipedInputStream/PipedOutputStream:
用於管道輸入輸出(將一個程式或一個執行緒的輸出結果直接連線到另一個程式或一個執行緒的輸入埠,實現兩者資料直接傳送。操作時需要連結);
4管道的連線:
方法之一是透過建構函式直接將某一個程式的輸出作為另一個程式的輸入,在定義物件時指明目標管道物件
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用雙方類中的任一個成員函式 connect()相連線
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的輸入與輸出:
輸出管道物件呼叫write()成員函式輸出資料(即向管道的輸入端傳送資料);而輸入管道物件呼叫read()成員函式可以讀起資料(即從輸出管道中獲得資料)。這主要是藉助系統所提供的緩衝機制來實現的。
6隨機檔案讀寫:
RandomAccessFile類(它直接繼承於Object類而非InputStream/OutputStream類),從而可以實現讀寫檔案中任何位置中的資料(只需要改變檔案的讀寫位置的指標)。
隨機檔案讀寫程式設計的基本過程為:
① 生成流物件並且指明讀寫型別;
② 移動讀寫位置;
④ 關閉檔案。
回覆列表
一、超類: 位元組流: InputStream(讀入流) OutputStream(寫出流) 字元流: Reader(字元 讀入流) Writer (字元寫出流) 二、檔案操作流 位元組流: FileInputStream ,FileOutputStream 字元流: FileReader, FileWriter(用法與位元組流基本相同,不寫) //1.指定要讀 的檔案目錄及名稱 File file =new File("檔案路徑"); //2.建立檔案讀入流物件 FileInputStream fis =new FileInputStream(file); //3.定義結束標誌,可用位元組陣列讀取 int i =0 ; while((i = fis.read())!=-1){ //i 就是從檔案中讀取的位元組,讀完後返回-1 } //4.關閉流 fis.close(); //5.處理異常 //1.指定要寫到的檔案目錄及名稱 File file =new File("檔案路徑"); //2.建立檔案讀入流物件 FileOutputStream fos =new FileOutputStream(file); //3.定義結束標誌 fos.write(要寫出的位元組或者位元組陣列); //4.重新整理和關閉流 fos.flush(); fos.close(); //5.處理異常 三、緩衝流: 位元組緩衝流: BufferedInputStream,BufferedOutputStream 字元緩衝流:BufferedReader ,BufferedWriter 緩衝流是對流的操作的功能的加強,提高了資料的讀寫效率。既然緩衝流是對流的功能和讀寫效率的加強和提高,所以在建立緩衝流的物件時應該要傳入要加強的流物件。 //1.指定要讀 的檔案目錄及名稱 File file =new File("檔案路徑"); //2.建立檔案讀入流物件 FileInputStream fis =new FileInputStream(file); //3.建立緩衝流物件加強fis功能 BufferedInputStream bis =new BufferedInputStream(fis); //4.定義結束標誌,可用位元組陣列讀取 int i =0 ; while((i = bis.read())!=-1){ //i 就是從檔案中讀取的位元組,讀完後返回-1 } //5.關閉流 bis.close(); //6.處理異常 //1.指定要寫到的檔案目錄及名稱 File file =new File("檔案路徑"); //2.建立檔案讀入流物件 FileOutputStream fos =new FileOutputStream(file); //3.建立緩衝流物件加強fos功能 BufferedOutputStream bos=new BufferedOutputStream(fos); //4.向流中寫入資料 bos.write(要寫出的位元組或者位元組陣列); //5.重新整理和關閉流 bos.flush(); bos.close(); //6.處理異常 四、物件流 ObjectInputStream ,ObjectOutputStream 不同於以上兩種型別的流這裡只能用位元組對物件進行操作原因可以看上篇的編碼表比照原理 ObjectOutputStream物件的序列化: 將java程式中的物件寫到本地磁盤裡用ObjectOutputStream eg:將Person類的物件序列化到磁碟 建立Person類 注1:此類要實現Serializable介面,此介面為標誌性介面 注2:此類要有無參的建構函式 注3:一旦序列化此類不能再修改 class Person implements Serializable{ public Person(){} } 2.建立物件流物件 注:要增強功能可以將傳入檔案緩衝流 ObjectOutputStream oos =new ObjectOutputStream( new FileOutputStream(new File("檔案路徑"))); 3.寫入物件 ,一般會將物件用集合儲存起來然後直接將集合寫入檔案 List