我正在尝试按顺序创建然后删除目录。但是,似乎删除目录不起作用。
有谁知道为什么?是否由于文件系统没有在Java中刷新?
public boolean createDirectory(File file) {
// Delete Directory if alreday exists
if (file.exists()) {
deleteDirectory(file);
}
boolean status = file.mkdirs();
if (status) {
System.out.println(" Successfull of creating Directory " + file.getPath());
}
return status;
}
public boolean deleteDirectory(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
File delFile = new File(dir, children[i]);
if (!delFile.exists()) {
System.out.println("Cannot find directory to delete" + delFile.getPath());
return false;
}
boolean success = deleteDirectory(delFile);
System.out.println(delFile + ": success? " + success);
if (!success) {
System.out.println("failure during delete directory" + delFile.getPath());
return false;
}
}
// The directory is now empty so now it can be smoked
return dir.delete();
}
}
答案 0 :(得分:3)
如果这是在Windows上运行,那么问题通常是如果任何进程“正在使用”它,Windows将不会删除目录 - 即,打开该目录(或其中一个子目录)的文件,或者将该目录(或其中一个子目录)作为其当前工作目录。
答案 1 :(得分:1)
我建议使用已经很好建立的方法,而不是尝试创建自己的递归删除方法。如果可以,请使用Apache Commons IO FileUtils.deleteDirectory(java.io.File)。