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循環的,就直接刪除了。