在Java中递归删除目录

新手上路,请多包涵

有没有办法在 Java 中递归删除整个目录?

在正常情况下,可以删除一个空目录。然而,当涉及到删除包含内容的整个目录时,就不再那么简单了。

如何删除包含 Java 内容的整个目录?

原文由 paweloque 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 362
2 个回答

您应该查看 Apache 的 commons-io 。它有一个 FileUtils 类,可以做你想做的事。

 FileUtils.deleteDirectory(new File("directory"));

原文由 Steve K 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Java 7 中,我们终于 可以通过可靠的符号链接检测来做到这一点。 (我不认为 Apache 的 commons-io 目前具有 可靠的 符号链接检测,因为它不处理 Windows 上使用 mklink 创建的链接。)

为了历史起见,这里有一个 Java 7 之前的答案,它 遵循符号链接。

 void delete(File f) throws IOException {
  if (f.isDirectory()) {
    for (File c : f.listFiles())
      delete(c);
  }
  if (!f.delete())
    throw new FileNotFoundException("Failed to delete file: " + f);
}

原文由 erickson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题