Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件#删除而不是删除文件_Java_Io - Fatal编程技术网

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。但是没有抛出异常。在这种情况下,它们只是被丢弃。