Java實現檔案以及資料夾的建立和刪除
阿新 • • 發佈:2018-10-31
1,檔案建立
/** * 建立指定路徑檔案 * * @param filePath:指定路徑(包括檔名的絕對路徑) */ public static void createFile(String filePath) { File file = new File(filePath); File fileParent = file.getParentFile(); if (!fileParent.exists()) { fileParent.mkdirs(); createFile(filePath); } else { try { file.createNewFile(); System.out.println("建立成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("檔案建立異常"); } } }
2,檔案的刪除
/** * 刪除指定路徑的檔案 * @param filePath:帶有指定檔名稱的檔案的絕對路徑 */ public static void recurDelete(String filePath){ File f=new File(filePath); try{ for(File fi:f.listFiles()){ if(fi.isDirectory()){ recurDelete(fi.getAbsolutePath()); } else{ fi.delete(); System.out.println(fi.getAbsolutePath()+":刪除成功!"); } } f.delete(); } catch(NullPointerException n){ System.out.println("Sorry,No such file"); } }
注:
(1)這兩個方法都是通過遞迴方式實現
(2)遞迴方式有一個問題,就是會出現死迴圈,這個時候會報如下錯誤:
比如我們測試建立檔案的方法,傳入一個根目錄都不存在的路徑:"Z://test.text",也就是說Z盤根本就不存在,我們是無法建立根目錄的,這個時候就會出現上述錯誤
createFile("Z://test.txt");
我們可以檢視API找找StackOverflowError,其繼承至VirtualMachineError,再上一層是Error,所以它是屬於Throwable下的Error分支,對於處理它的方式,我們是建議完善其他程式碼邏輯,而不是捕獲或者丟擲做一個簡單的處理,因為這是一個錯誤,不是Exception(此處關於Throwable的相關API的知識就不多說了
【 參考:
VirtualMachineError:
當 Java 虛擬機器崩潰或用盡了它繼續操作所需的資源時,丟擲該錯誤。
StackOverflowError :
當應用程式遞迴太深而發生堆疊溢位時,丟擲該錯誤
】