【发布时间】:2021-03-07 18:03:08
【问题描述】:
我有一个目录 M:\SOURCE,我已经列出并移动了它的内容,直到它为空
在那之后,我想继续删除它,我试过了(是的,我也确保它是空的):
sourceFile being "M:\SOURCE"
sourceFile.delete()
Files.delete(sourceFile.toPath());
FileUtils.deleteQuietly(sourceFile);
FileUtils.deleteDirectory(sourceFile);
FileUtils.forceDelete(sourceFile)
没有任何其他方法抛出异常,并且 .delete() 返回 true
但是,该目录仍然存在,在尝试访问该文件夹时我从 Windows 收到以下消息:
运行进程资源管理器时我可以看到 java 正在使用该资源(只有在我尝试删除源时才会发生这种情况,请记住尝试删除源目录是我的程序做的最后一件事)
为了让我更加害怕,一旦我停止了我的 java 虚拟机,文件夹就会神奇地消失。所以Java确实得到了正确的指令,只是在它被终止之前不愿意删除它
在删除目录之前运行System.gc()也没有帮助,我的工作目录不是我要删除的目录
【问题讨论】:
-
您的文件夹中是否有任何文件在您的 java 程序中被删除?如果您进行了一些 I/O 操作,那么这些文件可能会挂在您的 JVM 内存中。你需要关闭它们/它。
-
L.E.你如何移动内容?可以分享代码吗?
-
其中一些方法返回结果值......您应该检查这些值。另外,我认为您应该使用 NIO API 而不是 Apache Commons。