目录
前言
Apache Commons-io 是一个非常实用的 Java I/O 操作库,它极大地简化了文件和流操作。无论是文件读写、流处理,还是路径操作,Commons-io 都提供了丰富的工具类来帮助开发者更高效地完成任务。在实际项目中引入它,可以减少大量重复性代码,提升开发效率。
简单记录一下使用Commons IO的使用。
正文
什么是 Commons-io
Apache Commons IO 是 Apache 提供的一个开源Java库,它扩展了标准的Java I/O 功能,提供了一系列工具类用于简化文件和流操作。它支持常见的文件处理操作,如文件的读写、拷贝、删除、目录遍历、流的转换等,极大提高了开发效率。
Commons-io 库的核心部分包括:
FileUtils:用于处理文件和目录的各种操作。
IOUtils:用于简化流操作。
FilenameUtils:处理文件路径的工具。
FileFilter:用于文件过滤。
下载jar
我这里主要是Android开发为例。
进入《》,下载对应需要的版本。
当然最新的版本为: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 的优势
简化代码:Commons-io 提供了一组简化的 API,可以帮助开发者减少大量样板代码。例如,文件读取和写入只需几行代码即可完成。
处理大文件:Commons-io 内置了许多优化,用于处理大文件,特别是在内存受限的情况下,工具类中提供的方法更高效。
跨平台支持:它处理文件路径时不会因为平台差异而导致问题。
文件操作都是耗时的,一般推荐方子线程中处理。
参考文章
《》
《》
《