前言

Apache Commons-io 是一个非常实用的 Java I/O 操作库,它极大地简化了文件和流操作。无论是文件读写、流处理,还是路径操作,Commons-io 都提供了丰富的工具类来帮助开发者更高效地完成任务。在实际项目中引入它,可以减少大量重复性代码,提升开发效率。

简单记录一下使用Commons IO的使用。

正文

Commons-io简化文件操作的高效工具。

什么是 Commons-io

Apache Commons IO 是 Apache 提供的一个开源Java库,它扩展了标准的Java I/O 功能,提供了一系列工具类用于简化文件和流操作。它支持常见的文件处理操作,如文件的读写、拷贝、删除、目录遍历、流的转换等,极大提高了开发效率。

Commons-io 库的核心部分包括:

  1. FileUtils:用于处理文件和目录的各种操作。

  2. IOUtils:用于简化流操作。

  3. FilenameUtils:处理文件路径的工具。

  4. FileFilter:用于文件过滤。

下载jar

我这里主要是Android开发为例。

进入《Download Apache Commons IO》,下载对应需要的版本。

当然最新的版本为:commons-io-2.18.0-bin.zip

解压后里面有对应的jar:commons-io-2.18.0.jar,可以使用这个jar,也可以直接配置的

implementation 'commons-io:commons-io:2.18.0'

常用的工具类

FileUtils 类

FileUtils 类是 Commons-io 中最常用的工具类之一,它提供了大量与文件和目录相关的操作方法。

文件拷贝

使用 FileUtils.copyFile() 方法可以方便地复制文件。

File aFile = new File("/sdcard/aaa.txt");
File bFile = new File("/sdcard/bbb.txt");
try {
    FileUtils.copyFile(aFile, bFile);
} catch (IOException e) {
    throw new RuntimeException(e);
}
文件删除

FileUtils.deleteQuietly() 方法可以安全地删除文件或目录。

File file = new File("/sdcard/bbb.txt");
boolean success = FileUtils.deleteQuietly(file);
读取文件内容

FileUtils.readFileToString() 方法可以轻松地读取文件内容并返回一个字符串。

File file = new File("/sdcard/aaa.txt");
try {
    String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
} catch (IOException e) {
    throw new RuntimeException(e);
}
写入文件内容

FileUtils.writeStringToFile() 可以快速将字符串内容写入到文件中。

File file = new File("/sdcard/aaa.txt");
String content = "笔友城堡biumall.com,记录美好生活";
try {
    FileUtils.writeStringToFile(file, content, StandardCharsets.UTF_8);
} catch (IOException e) {
    throw new RuntimeException(e);
}
IOUtils 类

IOUtils 类主要用于处理 Java 中的流操作,它简化了常见的流读写过程,如将输入流转换为字符串、将输出流写入文件等。

输入流转换为字符串

IOUtils.toString() 可以将输入流轻松转换为字符串。

File file = new File("/sdcard/aaa.txt");
try {
    String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
} catch (IOException e) {
    throw new RuntimeException(e);
}
将输入流拷贝到输出流

IOUtils.copy() 可以快速将数据从一个流拷贝到另一个流中。

try (FileInputStream fileInputStream = new FileInputStream("/sdcard/aaa.txt");
     FileOutputStream fileOutputStream = new FileOutputStream("/sdcard/bbb.txt")
) {
    IOUtils.copy(fileInputStream, fileOutputStream);
} catch (IOException e) {
    e.printStackTrace();
}
FilenameUtils 类

FilenameUtils 类是处理文件路径的工具类,它提供了许多方法来简化路径的操作。

获取文件扩展名

FilenameUtils.getExtension() 方法可以获取文件的扩展名。

String extension = FilenameUtils.getExtension("/sdcard/aaa.txt");
获取文件的基本名称

不带扩展名,FilenameUtils.getBaseName() 返回不带扩展名的文件名称。

String baseName = FilenameUtils.getBaseName("/sdcard/aaa.txt");
LineIterator使用
try (LineIterator lineIterator = FileUtils.lineIterator(file, String.valueOf(StandardCharsets.UTF_8))) {
    while (lineIterator.hasNext()) {
        //空格处理
        String line = lineIterator.next().replace("  ", "") + IOUtils.LINE_SEPARATOR_UNIX;
        //其他处理
    }
} catch (Exception e) {
    e.printStackTrace();
}

Commons-io 的优势

  1. 简化代码:Commons-io 提供了一组简化的 API,可以帮助开发者减少大量样板代码。例如,文件读取和写入只需几行代码即可完成。

  2. 处理大文件:Commons-io 内置了许多优化,用于处理大文件,特别是在内存受限的情况下,工具类中提供的方法更高效。

  3. 跨平台支持:它处理文件路径时不会因为平台差异而导致问题。

文件操作都是耗时的,一般推荐方子线程中处理。

参考文章

  1. Commons-IO User guide

  2. Download Apache Commons IO

  3. Commons-io:简化文件操作的高效工具

相关文章

暂无评论

none
暂无评论...