我有以下代码删除文件夹及其内容,但它只删除内容而不是文件夹。如何更改它以删除文件夹?
private static void deleteCat(String catName) {
File fileToDel = new File("Catalogues/" + catName);
if (fileToDel.exists()) {
if (fileToDel.isDirectory()) {
if (fileToDel.list().length > 0) {
for (String s : fileToDel.list()) {
deleteCat(catName + "/" + s);
}
}
} else {
if (fileToDel.delete()) {
System.out.println("File " + fileToDel + " deleted");
} else {
System.out.println("Unable To Del " + fileToDel);
}
}
}
}
答案 0 :(得分:4)
删除第10行的else。必须以任何方式执行fileToDel.delete()。
答案 1 :(得分:2)
当您尝试删除目录时,您还没有包含删除目录本身的代码
private static void deleteCat(String catName) {
File fileToDel = new File("Catalogues/" + catName);
if (fileToDel.exists()) {
if (fileToDel.isDirectory()) {
if (fileToDel.list().length > 0) {
for (String s : fileToDel.list()) {
deleteCat(catName + "/" + s);
}
}
fileToDel.delete();
}
//Always want to delete the given file, so remove the 'else'
if (fileToDel.delete()) {
System.out.println("File " + fileToDel + " deleted");
} else {
System.out.println("Unable To Del " + fileToDel);
}
}
}
答案 2 :(得分:1)
它只删除您的内容,因为您不删除目录。在您的directoryroutine结束时添加删除目录的命令。
if (fileToDel.isDirectory()) {
if (fileToDel.list().length > 0) {
for (String s : fileToDel.list()) {
deleteCat(catName + "/" + s);
}
}
fileToDel.delete(); //delete directory
} else ...
另请查看apache commons-io lib(http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File))