例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter BufferedReader、BufferedWriter FileInputStream、FileOutputStream 隨機存取檔案 請參考課本第十四、十六章
例外處理(一) 當java程式遇到例外或錯誤發生時,會拋 出(throw)例外物件,用來指明錯誤 例如:demo4 輸入非數字字母時 當例外沒有被處理(catch)時,預設就是 停止執行。 Java的例外處理由try catch finally三個區塊 組成的程式區塊構成(finally可以省略) 。
例外處理(二) 語法: try{ 要檢查的程式敘述 } catch (例外類別 變數名稱){ 例外發生時的處理敘述 finally{一定會執行的程式碼} 參考demo27
拋出例外 用throw這個指令可以拋出例外 常用的例外類別可以參考 http://java.sun.com/j2se/1.5.0/docs/api/java/l ang/Exception.html 主動拋出例外的寫法可以參考demo28 Method也可以不自己處理而用 throws 指令拋出 例外給外面處理 demo28a 自己也可以定義自己的例外類別 demo28b
作業 課堂作業:修改梯形面積計算,處理輸入 字母的狀況 實習作業 撰寫一個程式,由鍵盤讀取一個整數字 串,若整數值小於20,拋出agetoosmall 這個例外物件,並且印出「年紀太小」 若整數值大於50,拋出agetooold這個例 外物件,並且印出「年紀太大」 整數值介於20到50之間,印出原來數值
串流 串流(Stream)就是指一連串的「字元」或 「位元」組成的資料流。 Java可以利用InputStream、 OutputStream、 Reader、Writer類別來處理串流輸出入。結 束必須close()。 InputStream、OutputStream用來處理「位元 串流」。 Reader、Writer用來處理「字元串流」
FileReader、FileWriter 繼承Reader、Writer,用來處理字元 用FileReader(filename)來開啟讀取的檔案 用FileWriter(filename)來開啟寫入的檔 案,FileWriter(filename,true)則會開啟可以 附加寫入的檔案 參考demo19a demo19b 一般我們不會直接用這兩個類別
BufferedReader、BufferedWriter 用bufferedxxx class可以替stream加上buffer, 有效提升I/O效率 參考demo19、demo20 常用的特殊method newLine()寫入換行字元 flush() 清空緩衝區 readLine() 讀入一整行 skip(long n) 讀取的時候跳過n個字元 write(String str) 寫出字串
作業題目 產生1000個亂數,寫入rand.txt檔案中,另 寫一個程式讀取此檔案,並計算數值的平 均、最大與最小值 寫程式將a.txt與b.txt內容合併存成ab.txt 寫程式讀取一個文字檔,計算其中有幾個 字,有幾個a、e、i、o、u字母
FileInputStream、FileOutputStream 用來處理二進位檔案 常用的特殊method available():取得讀取串流的位元數 參考demo29.java 二技作業:讀入一個不知大小的正方形 bmp檔,將之順時針轉90度、180度、270 度
隨機存取檔案 RandomAccessFile類別是用來隨機存取檔案 RandomAccessFile(String name, String mode) 開 檔 mode r :讀取 rw:讀寫 rwd rws:讀寫且更改時同時寫入硬碟 特殊method seek(n) 跳到第n byte 參考demo29a 這個class算是通用的檔案處理 class