行业资讯 2025年08月6日
0 收藏 0 点赞 116 浏览 2110 个字
摘要 :

文章目录 1.使用Apache Commons IO中的FileUtils.deleteDirectory() 2. 使用Java NIO中的Files.delete() 3.Java 8中删除目录的方法 学习使用Java IO、New IO和Commons ……




  • 1.使用Apache Commons IO中的FileUtils.deleteDirectory()
  • 2. 使用Java NIO中的Files.delete()
  • 3.Java 8中删除目录的方法

学习使用Java IO、New IO和Commons IO类来删除目录以及其中的所有子目录和文件。

1.使用Apache Commons IO中的FileUtils.deleteDirectory()

将Commons IO模块包含在项目中,使用Maven依赖项。

Dependency<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

Commons IO模块具有FileUtils类。其deleteDirectory(dir)方法可以用于删除一个目录以及其中的所有子目录和文件。

如果由于任何原因删除失败,此方法将抛出IOException。

//删除一个目录、子目录及其中的所有文件
File file = FileUtils.getFile(\"c:/temp/innerDir\");
FileUtils.deleteDirectory( file );

请使用另一个方法deleteQuitly(dir)以安静地删除。此方法从不抛出异常,它返回true如果目录被删除,否则返回false。

File file = FileUtils.getFile(\"c:/temp/innerDir\");
boolean isDeleted = FileUtils.deleteQuietly( file );

2. 使用Java NIO中的Files.delete()

Java文档中的另一种方法是使用Files.walkFileTree()来迭代给定目录中的所有子目录和文件,并逐个删除它们。

递归地工作分两步:

  • 首先,它首先删除目录中的所有文件
  • 然后它删除目录本身

这个Java示例使用Files.walkFileTree()方法和SimpleFileVisitor来执行删除操作。

// 递归删除一个目录
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class DeleteDirectoryNIO
{
    public static void main(String[] args)
    {
        Path dir = Paths.get(\"c:/temp/innerDir\");
        try
        {
            Files.walkFileTree(dir, new SimpleFileVisitor&lt;Path&gt;()
            {
                  @Override
                  public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                          throws IOException
                  {
                      System.out.println(\"Deleting the file: \" + file);
                      Files.delete(file);
                      return FileVisitResult.CONTINUE;
                  }
                  @Override
                  public FileVisitResult postVisitDirectory(Path dir,
                          IOException exc) throws IOException
                  {
                      System.out.println(\"Deleting the dir: \" + dir);
                      if (exc == null) {
                          Files.delete(dir);
                          return FileVisitResult.CONTINUE;
                      } else {
                          throw exc;
                      }
                   }
                });
        }
        catch (IOException e)
        {
          e.printStackTrace();
        }
    }
}

3.Java 8中删除目录的方法

自Java 8以来,我们可以将Java NIO操作与Java流结合起来,上述方法变得更加简洁。

// Java 8递归删除目录
public class DeleteDirectoryNIOWithStream
{
    public static void main(String[] args)
    {
        Path dir = Paths.get(\"c:/temp/innerDir\");
        Files.walk(dir)
                  .sorted(Comparator.reverseOrder())
                  .map(Path::toFile)
                  .forEach(File::delete);
    }
}

在这里,Files.walk()返回一个路径流,表示目录内容(即文件),先于目录本身。然后它将路径映射为文件并删除每个文件。现在您可以使用delete()方法删除文件本身。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9474.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

985
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

515
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号