1 / 16

File I/O ( 檔案輸入輸出 )

File I/O ( 檔案輸入輸出 ). 綱要. 串流 (Stream) 字元與位元處理 語法格式介紹 由鍵盤讀取資料 BufferedReader 與 BufferedWriter 的 methods 程式範例. 檔案輸入輸出. 串流 (Stream) Java 是以「串流 (Stream) 」的方式來處理輸入與輸出。 「串流」是一種抽象觀念,從鍵盤輸入資料、將處理結果寫入檔案、以及讀取檔案的內容等動作皆視為串流的處理。

deron
Download Presentation

File I/O ( 檔案輸入輸出 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File I/O(檔案輸入輸出)

  2. 綱要 • 串流(Stream) • 字元與位元處理 • 語法格式介紹 • 由鍵盤讀取資料 • BufferedReader與BufferedWriter的methods • 程式範例

  3. 檔案輸入輸出 • 串流(Stream) • Java是以「串流(Stream)」的方式來處理輸入與輸出。 • 「串流」是一種抽象觀念,從鍵盤輸入資料、將處理結果寫入檔案、以及讀取檔案的內容等動作皆視為串流的處理。 • 串流裡的資料是由字元(characters)=純文字檔(text file)與位元(bit)=二進位檔(binary file)所組成。 • 串流分為「輸入串流(input stream)」與「輸出串流(output stream)」兩種。

  4. 檔案輸入輸出 • 字元: • 讀檔:FileReader • 寫檔:FileWriter • 使用緩衝區來讀檔:BufferedReader • 將資料寫入緩衝區:BufferedWriter • 位元: • 讀檔:FileInputStream • 寫檔:FileOutputStream • 呼叫:檔案處理所使用的須載入呼叫 import java.io.*;

  5. 檔案輸入輸出 • 字元: • 讀檔 • 寫檔 FileReader(String name)//依檔案名稱建立一個可供讀取字元的輸入串流物件 FileWriter(String filename) //依檔案名稱建立一個可供寫入字元資料的串流物件,原先的檔案會被覆蓋。 FileWriter(String filename, Boolean a) //同上,但如果a設為true,則會將資料附加在原先的資料後面。

  6. 檔案輸入輸出 • 字元: • 使用緩衝區來讀檔 BufferedReader(Reader in) //建立緩衝區字元讀取串流 BufferedReader(Reader in, int size) //建立緩衝區字元讀取串流,並設定緩衝區大小 Ex: FileReader dataFile=new FileReader(“d:\\number.txt”); BufferedReader bfr=new BufferedReader(dataFile);

  7. 檔案輸入輸出 • 字元: • 將資料寫入緩衝區 BufferedWriter(Writer out) //建立緩衝區字元寫入串流 BufferedWriter(Writer out, int size) //建立緩衝區字元寫入串流,並設定緩衝區大小 Ex: FileWriter dataFile=new FileWriter (“d:\\number.txt”); BufferWriter bfw=new BufferedWriter (dataFile);

  8. 檔案輸入輸出 • 位元: • 讀檔 • 寫檔 FileInputStream(String name) //根據所給予的字串建立FileInputStream類別的 FileOutputStream(String name) //根據檔案名稱建立一個可供寫入資料的輸出串流物件,原先的檔案會被覆蓋 FileOutputStream(String name, Boolean a) //同上,但如果a設為true,則會將資料附加在原先的資料後面

  9. 檔案輸入輸出 • 準備好欲讀取的檔案(rainFile.in),並建立FileReader物件。 • 根據FileReader物件建立BufferedReader物件。 • FileReader是讀取檔案的字元流;BufferedReader是透過buffer讀取的字元串流,讓資料暫時儲存到緩衝區。 inFile=new BufferedReader(new FileReader("rainFile.in"));

  10. 檔案輸入輸出 • 準備好寫出的檔案(data.out),並建立FileWriter物件。 • 根據FileWriter物件建立BufferedWriter物件。 • FileWriter是寫入檔案的字元流;BufferedWriter是透過buffer寫入的字元串流,讓資料暫時寫至到緩衝區。 outFile=new BufferedWriter (new FileWriter("data.out"));

  11. 檔案輸入輸出 • 讀取鍵盤輸入資料 • 資料來源 • 讀取鍵盤資料 • 放入暫存區 System.in InputStreamReader(System.in) BufferedReaderbr = new BufferedReader(new InputStreamReader(System.in));

  12. 檔案輸入輸出 • 讀取鍵盤輸入資料 import java.io.*; class test123 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(br.readLine()); //讀入鍵盤資料並印出 } }

  13. 檔案輸入輸出-Method • BufferedReader的方法

  14. 檔案輸入輸出 • BufferedWriter的方法 • 關閉檔案: 檔案(物件)名稱.close();

  15. 檔案輸入輸出-程式範例 import java.io.*; public class app14_4 { public static void main(String args[]) throws IOException { FileWriter fw=new FileWriter("c:\\random.txt"); BufferedWriter bfw=new BufferedWriter(fw); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i=1;i<=5;i++) { bfw.write(Double.toString(Math.random())); // 寫入亂數到緩衝區 bfw.newLine(); // 寫入換行符號 } bfw.write(br.readLine()); //由鍵盤輸入資料,並寫入檔案中 bfw.flush(); // 將緩衝區內的資料寫到檔案裡 fw.close(); // 關閉檔案 } }

  16. 檔案輸入輸出-程式範例 import java.io.*; public class app14_5 { public static void main(String args[]) throws IOException { FileReader fr=new FileReader("c:\\random.txt"); BufferedReader bfr=new BufferedReader(fr); char str[]=new char[100]; //宣告size 100的字元陣列 System.out.println(bfr.readLine()); //讀入一行資料 bfr.skip(3); //跳過3個字元 bfr.read(str,5,10); //讀入10個字,放入str的陣列第6格以後的位子 System.out.println(str); //印出str字串 fr.close(); // 關閉檔案 } }

More Related