1. 程式人生 > >Java實現檔案以及資料夾的建立和刪除

Java實現檔案以及資料夾的建立和刪除

 

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的知識就不多說了

)。網上也有說通過修改虛擬機器預設棧大小的方法,這種方式只是針對那些遞迴呼叫次數多但是不是死迴圈的情況,在這裡肯定是不適用的。關於StackOverflowError更多瞭解可以檢視如何解決StackOverflowError

【 參考:

VirtualMachineError:

當 Java 虛擬機器崩潰或用盡了它繼續操作所需的資源時,丟擲該錯誤。

StackOverflowError :

當應用程式遞迴太深而發生堆疊溢位時,丟擲該錯誤