程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 遍歷-java遞歸刪除目錄的一個小問題

遍歷-java遞歸刪除目錄的一個小問題

編輯:編程解疑
java遞歸刪除目錄的一個小問題

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DeleteFilesDemo {

public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub
    File dir = new File("C:\\CODE\\a");
    deleteDir(dir);
    printTime();
}

public static void deleteDir(File dir) {
    File[] files = dir.listFiles();
    for (File f : files) {
        if (f.isDirectory())
            deleteDir(f);
        else
            System.out.println(f.toString() + "——" + f.delete());
    }
    System.out.println(dir.toString() + "................" + dir.delete());
}

public static void printTime() throws FileNotFoundException {
    String time = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss").format(new Date());
    new PrintStream("c:/code/deleteTime.log").print(time + "\r\n所有目錄與文件刪除成功!");
}

}

請問,如果遞歸到一個空目錄,再調用一次deleteDir得到的File數組不就是空的了嗎?那麼遍歷的時候為什麼不會出現異常呢?

最佳回答:


這裡假設是空目錄A,判斷是目錄,遞歸調用deleteDir(File dir),然後到了 File[] files = dir.listFiles();這句,由於是空目錄所以files=null;所以不進for循環的,就直接刪除了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved