为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中递归删除目录

在Java中递归删除目录

小怪兽爱吃肉 2019-07-25 16:54:32
在Java中递归删除目录有没有办法在Java中递归删除整个目录?在正常情况下,可以删除空目录。但是,当要删除包含内容的整个目录时,它就不再那么简单了。如何用Java中的内容删除整个目录?
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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

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


查看完整回答
反对 回复 2019-07-25
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

使用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);}


查看完整回答
反对 回复 2019-07-25
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

在Java 7+中,您可以使用Files类。代码很简单:

Path directory = Paths.get("/tmp");Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
   @Override
   public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
       Files.delete(file);
       return FileVisitResult.CONTINUE;
   }

   @Override
   public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
       Files.delete(dir);
       return FileVisitResult.CONTINUE;
   }});


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信