Java删除文件夹仍然存在

时间:2014-10-15 05:35:53

标签: java

我有一段代码:

List<String> unusedFolders = new ArrayList<String>();

for (int i = 0; i < unusedFolders.size(); i++) {
    File dirDate = new File(unusedFolders.get(i));

    String[] files = dirDate.list();

    for(String f: files) {
        File file = new File(dirDate.getPath(),f);
        file.delete();
    }

    dirDate.delete();
    //dirDate.deleteOnExit();
    }

列表“unusedFolder”的值如下:

C:\opt\transmission\tejas\transform\inv\20140927
C:\opt\transmission\tejas\transform\inv\20140928
C:\opt\transmission\tejas\transform\inv\20140929

它在eclipse中运行没有错误但是当我检查Windows资源管理器时,文件夹仍然存在,当我尝试访问它时(单击)。它提示:

C:\opt\transmission\tejas\transform\inv\20140927 is not accessible. Access is Denied.

现在,我甚至无法手动删除它。有人有想法吗?谢谢。

2 个答案:

答案 0 :(得分:1)

通常,当发生类似这样的事情时,它会发生在Windows上。

这是因为Windows可以强制执行一种文件系统锁定,文件在不再使用之前不会消失。检查您是否有旧的副本&#34;&#34;运行可能会保持文件(在本例中为目录)打开。如果是这样,则终止程序通常会允许删除完成。

假设它不是那么简单,比如父目录上的目录写权限(必须为要删除的子目录重写)。

答案 1 :(得分:1)

这肯定是WIndows环境的工作。其他一些进程必须持有对文件夹或其内容的锁定。一旦你确定了持有锁并杀死它的进程,你肯定能够删除该文件夹。

如果您不确定正在访问该文件夹的进程,您可以考虑重新启动您的计算机。