JAVA基礎複習(四)異常和IO
1、不應該讓方法來終止程式,應該由呼叫者決定是否終止程式,但是又要儘量使用if來進行簡單測試而不是異常處理來測試
2、異常是物件,而物件都採用類來定義,異常的根類是java.lang.Throwable
3、異常類主要分為三種類型:系統錯誤(JAVA虛擬機器丟擲,免檢異常)、異常(要被被捕獲和處理)、執行時錯誤(程式設計錯誤,免檢異常)
4、如果方法類沒有在父類中宣告異常,那麼就不能在子類中對其進行繼承來宣告異常
5、在catch塊中異常被指定的順序非常重要,父類應在子類的下面
6、使用finally子句時可以省略catch塊,finally塊之前有return語句,finally塊還是會被執行
7、和其他異常一起丟擲一個異常,稱為鏈式異常,異常沒有被當前方法捕獲,傳遞給呼叫者,這個過程不斷重複到異常被捕獲或傳遞給main方法
8、File類包含許多獲取檔案屬性的方法,以及重新命名和刪除檔案目錄的方法,無論檔案是否存在都可以建立這個例項
9、文字可使用PrintWriter寫資料:
Public class WriteData{ public static void main(String[] args) throws IOException { java.io.File file=new java.io.File("xx.txt"); if(file.exits()){ System.exit(1);//檔案存在則退出 } java.io.PrintWriter output=new java.io.PrintWriter(file);//建立檔案 output.print("輸入檔案寫入的內容1"); ... output.print("輸入檔案寫入的內容n"); out.close(); } }
10、try(宣告建立資源){使用資源處理檔案;}即try-with-resources可以自動關閉資源
11、文字可使用Scanner讀資料:
...
java.io.File file=new java.io.File("xx.txt");
Scanner input=new Scanner(file);
while(input.hasNext()){
String xx=input.next();
...
int xx=input.nextInt();
}
input.close();
...
12、二進位制I/O不涉及編碼解碼,效率比文字I/O更加高效,本質上來說,所有檔案都是二進位制檔案
13、FileInputStream和FileOutputStream用於從檔案讀取和輸入位元組,不同於File的是,如果試圖為不存在的檔案建立FileInputStream例項,將會發生IO異常,使用如:
...
try(FileOutputStream output=new FileOutputStream("xx.dat");){
for(int i=1;i<=10;i++)
output.write(i);//寫入1-10到xx.dat,不存在則自動建立,且將自動關閉資源
}
try(FileInputStream input=new FileInputStream("xx.dat")){
int value;
while((value=input.read())!=-1)//讀取xx.dat裡面的資料,也將在結束以後自動關閉資源
System.out.print(value+"");
}
...
14、FilterInputStream和FilterOutputStream是過濾資料的基類,用於處理整數值、雙精度值和字串
15、DataInputStream和DataOutputstream處理基本資料型別和字串,是上一條的拓展類
16、EOFException異常檢查是否已經讀取到了檔案末尾
17、BufferedInputStream和BufferedOutputStream可以通過減少讀寫次數來提高輸入輸出效率,快取區預設512個位元組,100M以上檔案讀寫建議使用
18、物件I/O--ObjectInputStream和ObjectOutputStream用於讀寫可序列化的物件,實現基本資料型別、字串和物件的輸入輸出
19、提高效能可以向資料流中寫入多個物件或基本資料型別,如:
ObjectOutputStream output=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("xx.dat")));
20、可序列化物件的類必須實現Serializable介面,內在機制自動完成寫物件的過程,資料域加上transient關鍵字,反序列化實在ObjectInputStream類中實現
21、隨機訪問檔案通過RandomAccessFile類,可設定只讀和讀寫兩者模式(r,rw;在建構函式中完成)