Java 文件#删除而不是删除文件
我需要删除包含一些文件的目录。我正在使用以下代码:Java 文件#删除而不是删除文件,java,io,Java,Io,我需要删除包含一些文件的目录。我正在使用以下代码: public static void delete(File f) { if (f.isDirectory()) { for (File c : f.listFiles()) { delete(c); } } f.setWritable(true); f.delete(); } 由于某些原因,目录中的某些文件无法删除,因此该目录不会被删除。这种行为的可能原因是什么?我如何解决这个问题?可能是文件在某
public static void delete(File f) {
if (f.isDirectory()) {
for (File c : f.listFiles()) {
delete(c);
}
}
f.setWritable(true);
f.delete();
}
由于某些原因,目录中的某些文件无法删除,因此该目录不会被删除。这种行为的可能原因是什么?我如何解决这个问题?可能是文件在某个地方打开,假设您对目录有写权限。试图删除一个未正确关闭的文件通常会导致奇怪的删除失败。程序存在后,您会发现文件可以删除。它们可以被其他进程或您的进程使用和锁定。或者您可能根本就没有权限。我按照中的建议调用了
System.gc()
,并且成功了。所讨论的文件不太可能打开。它的祖父母是。但我不知道这是否是一个问题。我按照中的建议调用了System.gc()
,它起了作用。这意味着有些文件在未关闭的情况下被丢弃。解决方案是确保文件始终在finally
块中关闭,这样即使抛出异常,文件也会关闭。或者使用Java7的ARM。但是没有抛出异常。在这种情况下,它们只是被丢弃。