虽然Google的guava对Java的IO操作进行了一定封装,但是它更偏向于集合、并发和缓存,在实际项目中,我非常喜欢guava,同时我也非常喜欢Apache的一个工具包org.apache.commons.io,这两个工具包提供非常强大的工具能力,能够简化代码逻辑,提高开发效率和质量,是每个Java程序员都应该掌握的工具包。此文简单介绍一下org.apache.commons.io,详细的可参考其API注,此文绝大部分内容翻译自http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html,感兴趣的查看原文,本文源码请移步
Apache Commons IO是Apache开源的一个工具包,其封装了对IO的常见操作,使开发人员只需要少量的代码就能完成大量的IO操作,此文主要介绍如下几个工具类
- Utility classes
- Input
- Output
- Filters
- Comparators
- File Monitor
1、Utils(FileUtils,FilenameUtils,FileSystemUtils)这三个类主要提供了对文件、文件名及文件系统的操作,API非常简单,通过API名称都能知道其作用,
示例如下
//文件绝对路径
private static final String EXAMPLE_TXT_PATH =
"/Users/fly/work/GitHub/algorithm/src/main/java/com/fly/practice/apachecommonsio/commonio.txt";
//文件父目录
private static final String PARENT_DIR =
"/Users/fly/work/GitHub/algorithm/src/main/java/com/fly/practice/apachecommonsio";
public static void runExample() throws IOException {
System.out.println("Utility Classes example...");
// FilenameUtils类示例
//获取完整路径
System.out.println("Full path of exampleTxt: " +
FilenameUtils.getFullPath(EXAMPLE_TXT_PATH));
//获取名称
System.out.println("Full name of exampleTxt: " +
FilenameUtils.getName(EXAMPLE_TXT_PATH));
//获取扩展名
System.out.println("Extension of exampleTxt: " +
FilenameUtils.getExtension(EXAMPLE_TXT_PATH));
System.out.println("Base name of exampleTxt: " +
FilenameUtils.getBaseName(EXAMPLE_TXT_PATH));
// FileUtils类示例
// 通过FileUtils.getFile(String)创建File对象,然后根据FileUtils.lineIterator(File)
//获取行迭代器
File exampleFile = FileUtils.getFile(EXAMPLE_TXT_PATH);
LineIterator iter =