【java】異常與File
1:異常(理解)
(1)程式出現的不正常的情況。
(2)異常的體系
Throwable
|--Error 嚴重問題,我們不處理。
|--Exception
|--RuntimeException 執行期異常,我們需要修正程式碼
|--非RuntimeException 編譯期異常,必須處理的,否則程式編譯不通過
(3)異常的處理:
A:JVM的預設處理
把異常的名稱,原因,位置等資訊輸出在控制檯,但是呢程式不能繼續執行了。
B:自己處理
a:try...catch...finally
自己編寫處理程式碼,後面的程式可以繼續執行
b:throws
把自己處理不了的,在方法上宣告,告訴呼叫者,這裡有問題
(4)面試題
A:編譯期異常和執行期異常的區別?
編譯期異常 必須要處理的,否則編譯不通過
執行期異常 可以不處理,也可以處理
B:throw和throws是的區別
throw:
在方法體中,後面跟的是異常物件名,並且只能是一個
throw丟擲的是一個異常物件,說明這裡肯定有一個異常產生了
throws:
在方法宣告上,後面跟的是異常的類名,可以是多個
throws是宣告方法有異常,是一種可能性,這個異常並不一定會產生
(5)finally關鍵字及其面試題
A:finally用於釋放資源,它的程式碼永遠會執行。特殊情況:在執行到finally之前jvm退出了
B:面試題
a:final,finally,finalize的區別?
b:如果在catch裡面有return,請問finally還執行嗎?如果執行,在return前還是後
會,前。
實際上在中間。這個上課我們講過
C:異常處理的變形
try...catch...finally
try...catch...
try...catch...catch...
try...catch...catch...fianlly
try...finally
(6)自定義異常
繼承自Exception或者RuntimeException,只需要提供無參構造和一個帶參構造即可
(7)異常的注意實現
A:父的方法有異常丟擲,子的重寫方法在丟擲異常的時候必須要小於等於父的異常
B:父的方法沒有異常丟擲,子的重寫方法不能有異常丟擲
C:父的方法丟擲多個異常,子的重寫方法必須比父少或者小
2:File(掌握)
(1)IO流操作中大部分都是對檔案的操作,所以Java就提供了File類供我們來操作檔案
(2)構造方法
A:File file = new File("e:\\demo\\a.txt");
B:File file = new File("e:\\demo","a.txt");
C:File file = new File("e:\\demo");
File file2 = new File(file,"a.txt");
(3)File類的功能(自己補齊)
A:建立功能
B:刪除功能
C:重新命名功能
D:判斷功能
E:獲取功能
F:高階獲取功能
G:過濾器功能
(4)案例:
A:輸出指定目錄下指定字尾名的檔名稱
a:先獲取所有的,在遍歷的時候判斷,再輸出
b:先判斷,再獲取,最後直接遍歷輸出即可
B:批量修改檔名稱
package test923;
import java.io.File;
/*
* 需求:把D:\\圖片\\Twitter的圖片名稱修改為
* 日期_順序.jpg
*
* 思路:
* A:封裝目錄
* B:獲取該目錄下所有的檔案的File陣列
* C:遍歷該File陣列,得到每一個File物件
* D:拼接一個新的名稱,然後重新命名即可。
*/
public class FileTest {
public static void main(String[] args) {
// 封裝目錄
File srcFolder = new File("D:\\圖片\\Twitter");
// 獲取該目錄下所有的檔案的File陣列
File[] fileArray = srcFolder.listFiles();
// 遍歷該File陣列,得到每一個File物件
for (File file : fileArray) {
// System.out.println(file);
/**
* 修改前
*IMG_20180923_1.jpg
*IMG_20180923_2.jpg
*IMG_20180923_3.jpg
*/
String name = file.getName();
System.out.println(name);
int index = name.indexOf("_");
String numberString = name.substring(index+5,index+9);
//System.out.println(numberString);
//int startIndex = name.lastIndexOf("_");
//int endIndex = name.lastIndexOf(".");
//String nameString = name.substring(startIndex+1,endIndex);
//System.out.println(nameString);
int endIndex = name.lastIndexOf("_");
String nameString = name.substring(endIndex);
String newName = numberString.concat(nameString);
//System.out.println(newName);
File newFile = new File(srcFolder,newName);
file.renameTo(newFile);
/**
* 修改後
* 0923_1.jpg
* 0923_2.jpg
* 0923_3.jpg
*/
}
}
}