Apache Commons IO
Table of Contents
1. Commons IO 简介
Apache 的 Commons IO 库中包含了一些 IO 相关的实用类,使用它们可以使你的 Java 代码更加简洁。
要在 Maven 工程中使用它,加入下面内容到 pom.xml 中即可。
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
参考:
Apache Commons IO API Documentation: https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html
2. FileUtils 和 IOUtils
这个库有很多实用的类,表 1 和表 2 分别是 FileUtils 类和 IOUtils 类中的常用方法的简单介绍。
| FileUtils 类中常用方法 | 说明 | 实例 |
|---|---|---|
| readLines | 读取整个文件,按行保存在 List<String>中 | List<String> lines = FileUtils.readLines(new File("test.txt"), "UTF-8"); |
| writeLines | 把 List<String>的内容写到文件中 | |
| readFileToString | 读取整个文件到 String 中 | String content = FileUtils.readFileToString(new File("test.txt"), "UTF-8"); |
| writeStringToFile | 把字符串写入到文件中,文件不存在会创建它 | FileUtils.writeStringToFile(new File("test.txt"), "This is file content."); |
| copyFile | 复制文件到另一个文件,目标文件不存在会创建它 | FileUtils.copyFile(new File("src.txt"), new File("dest.txt")); |
| copyFileToDirectory | 复制文件到目录中,目标目录不存在会创建它 | FileUtils.copyFileToDirectory(new File("test.txt"), new File("/tmp")); |
| copyURLToFile | 保存 URL 为文件 | FileUtils.copyURLToFile(new URL("http://www.baidu.com"), new File("baidu.html")); |
| copyDirectory | 复制目录,目标目录不存在会创建它,存在则合并 | |
| copyDirectoryToDirectory | 复制目录到另一个目录下(作为它的子目录) | |
| cleanDirectory | 清除目录中内存,不会删除目录本身 | |
| deleteDirectory | 递归地删除目录,目录不存在或者不是目录会抛异常 | |
| deleteQuietly | 删除文件或者目录(递归地),永不抛异常 | FileUtils.deleteQuietly(new File("/tmp/fileOrDir")); |
| IOUtils 类中常用方法 | 说明 | 实例 |
|---|---|---|
| copy | 复制流 | |
| toInputStream | 字符串转为输入流 | InputStream is = IOUtils.toInputStream("This is a String", "UTF-8"); |
| toString | 读取 InputStream/Reader 所有内容到 String 中 | String str = IOUtils.toString(yourInputStream, "UTF-8"); |
| toByteArray | 读取 InputStream/Reader 所有内容到 byte[]中 | |
| readLines | 读取 InputStream/Reader 所有内容到 List<String>中 | |
| writeLines | 把 Collection<?>中内容写到 OutputStream/Writer | |
| closeQuietly | 关闭流,忽略所有异常 | |
| contentEquals | 比较两个流内容是否相等 | |
| contentEqualsIgnoreEOL | 比较两个流内容是否相等,忽略换行符 |