我有个目录 M:\SOURCE
从中我列出并移动了它的内容,直到它是空的
之后,我想继续删除它,我已经尝试过了(是的,我还确保它是空的):
sourceFile being "M:\SOURCE"
sourceFile.delete()
Files.delete(sourceFile.toPath());
FileUtils.deleteQuietly(sourceFile);
FileUtils.deleteDirectory(sourceFile);
FileUtils.forceDelete(sourceFile)
其他任何方法都不会引发异常,并且.delete()返回 true
但是,该目录仍然存在,当尝试访问该文件夹时,我从windows收到以下消息:
在运行processexplorer时,我可以看到java正在使用该资源(这只发生在我尝试删除源代码时,请记住,尝试删除源代码目录是我的程序所做的最后一件事)
更让我抓狂的是,一旦我停止了java虚拟机,文件夹就神奇地消失了。所以java确实把指令做对了,只是在终止之前不愿意删除它
跑步 System.gc()
之前删除的目录也没有帮助,我的工作目录不是我要删除的
1条答案
按热度按时间yhived7q1#
使用时会出现此问题
Files
nio调用,在删除目录之前列出或返回目录内容流。在文件nio返回的任何路径流上使用try with resources有助于防止此问题: