从目录中移动文件后删除目录[java]

nhhxz33t  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(366)

我有个目录 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() 之前删除的目录也没有帮助,我的工作目录不是我要删除的

yhived7q

yhived7q1#

使用时会出现此问题 Files nio调用,在删除目录之前列出或返回目录内容流。
在文件nio返回的任何路径流上使用try with resources有助于防止此问题:

try(Stream<Path> stream = Files.list(directory)) {
    // do any work on contents - move / delete
}
// delete directory after closing stream above

相关问题