Java 实用工具类:Apache Commons IO 的 FileUtils

前言

        在 Java 中处理文件操作(如复制、删除、读取、写入等)时,如果仅使用 JDK 自带的 API,往往代码繁琐且不够直观。Apache Commons IO 提供的 FileUtils 工具类封装了常用的文件操作,大大提升了开发效率,是 Java 项目中广泛应用的文件处理工具。


一、引入依赖

Maven:

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

二、FileUtils 常用方法

1. 复制文件/目录
FileUtils.copyFile(srcFile, destFile);
FileUtils.copyDirectory(srcDir, destDir);
2. 删除文件/目录
FileUtils.deleteQuietly(fileOrDir);  // 无异常抛出
3. 读取文件内容为字符串/列表
String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
List<String> lines = FileUtils.readLines(file, StandardCharsets.UTF_8);
4. 写入字符串到文件
FileUtils.writeStringToFile(file, "hello", StandardCharsets.UTF_8);
5. 文件大小/目录大小
long size = FileUtils.sizeOf(file);
long dirSize = FileUtils.sizeOfDirectory(directory);
6. 文件比较
boolean isSame = FileUtils.contentEquals(file1, file2);
7. 清空目录
FileUtils.cleanDirectory(directory);
8. 获取临时目录、用户目录
File tmp = FileUtils.getTempDirectory();
File home = FileUtils.getUserDirectory();

三、常见应用场景

  • 备份文件:批量复制配置文件。

  • 日志清理:自动删除过期日志目录。

  • 上传下载处理:读取上传内容、写入导出文件。

  • 数据同步工具开发:对比两个文件是否一致,拷贝差异内容。

  • 构建工具:清空或初始化工作目录。


四、与 JDK 原生 API 对比

操作JDK 原生FileUtils
复制文件FileInputStream/OutputStream + 手动缓冲copyFile() 一行搞定
读取文件为字符串BufferedReader + 循环readFileToString() 一行完成
删除目录递归删除文件夹deleteQuietly() 简洁且不抛异常

五、注意事项

  1. deleteQuietly() 会吞掉异常,适合非关键流程。

  2. cleanDirectory() 不会删除根目录,只清空内部内容。

  3. 大文件操作仍需关注内存消耗,避免 readFileToString() 直接读入内存导致 OOM。


六、总结

    FileUtils 是文件处理的利器,封装了大量通用操作,适用于日常开发中大多数文件 I/O 场景。它极大简化了 Java 文件操作的繁琐步骤,提高了代码的可读性和可维护性。

        熟练掌握 FileUtils 能帮助我们更高效地编写与文件相关的逻辑代码,特别是在工具类、批处理、后台任务调度、资源管理等模块中,非常值得推荐使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stay Passion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值