Java - 删除文件夹及其内容

时间:2014-05-01 10:49:41

标签: java file-io

我有以下代码删除文件夹及其内容,但它只删除内容而不是文件夹。如何更改它以删除文件夹?

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);
                }
            }

        }
    }

3 个答案:

答案 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)