创建后无法删除目录

时间:2011-03-18 14:24:10

标签: java directory

我正在尝试按顺序创建然后删除目录。但是,似乎删除目录不起作用。

有谁知道为什么?是否由于文件系统没有在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();
    }
}

2 个答案:

答案 0 :(得分:3)

如果这是在Windows上运行,那么问题通常是如果任何进程“正在使用”它,Windows将不会删除目录 - 即,打开该目录(或其中一个子目录)的文件,或者将该目录(或其中一个子目录)作为其当前工作目录。

答案 1 :(得分:1)

我建议使用已经很好建立的方法,而不是尝试创建自己的递归删除方法。如果可以,请使用Apache Commons IO FileUtils.deleteDirectory(java.io.File)