not able to delete the directory through Java

后端 未结 5 1965
走了就别回头了
走了就别回头了 2021-02-13 07:15

In my application I have written the code to delete the directory from drive but when I inspect the delete function of File it doesn\'t delete the file. I have written some thin

相关标签:
5条回答
  • 2021-02-13 07:32

    in Java, directory deletion is possible only for empty directory, which leads to methods like the following :

    /**
     * Force deletion of directory
     * @param path
     * @return
     */
    static public boolean deleteDirectory(File path) {
        if (path.exists()) {
            File[] files = path.listFiles();
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                } else {
                    files[i].delete();
                }
            }
        }
        return (path.delete());
    }
    

    This one will delete your folder, even if non-empty, without troubles (excepted when this directory is locked by OS).

    0 讨论(0)
  • 2021-02-13 07:32

    Looking at the docs:

    If this pathname denotes a directory, then the directory must be empty in order to be deleted.

    Did you make sure that the directory is empty (no hidden files either) ?

    0 讨论(0)
  • 2021-02-13 07:42

    The directory must be empty to delete it. If it's not empty, you need to delete it recursively with File.listFiles() and File.delete()

    0 讨论(0)
  • 2021-02-13 07:51

    Why to invent a wheel with methods to delete recursively? Take a look at apache commons io. https://commons.apache.org/proper/commons-io/javadocs/api-1.4/

    FileUtils.deleteDirectory(dir);
    

    OR

    FileUtils.forceDelete(dir);
    

    That is all you need. There is also plenty of useful methods to manipulate files...

    0 讨论(0)
  • 2021-02-13 07:59

    Two other possibilities (besides the directory not being empty):

    • The user which runs the java program does not have write/delete permission for the directory
    • The directory is used/locked by a different process (you write that it's not, but how have you confirmed this?)
    0 讨论(0)
提交回复
热议问题