我有一段代码:
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.
现在,我甚至无法手动删除它。有人有想法吗?谢谢。
答案 0 :(得分:1)
通常,当发生类似这样的事情时,它会发生在Windows上。
这是因为Windows可以强制执行一种文件系统锁定,文件在不再使用之前不会消失。检查您是否有旧的副本&#34;&#34;运行可能会保持文件(在本例中为目录)打开。如果是这样,则终止程序通常会允许删除完成。
假设它不是那么简单,比如父目录上的目录写权限(必须为要删除的子目录重写)。
答案 1 :(得分:1)
这肯定是WIndows环境的工作。其他一些进程必须持有对文件夹或其内容的锁定。一旦你确定了持有锁并杀死它的进程,你肯定能够删除该文件夹。
如果您不确定正在访问该文件夹的进程,您可以考虑重新启动您的计算机。