【Java I/O 流】4 - 10 常用工具包
§4-10 常用工具包
4-10.1 Commons IO
Commons IO 是由 Apache 开源基金组织提供的一组有关 IO 操作的相关工具包。该工具包可以提高 IO 流的开发效率。
Apache Commons:Apache Commons – Apache Commons
Commons IO 下载链接:Commons IO – Download Apache Commons IO
Commons IO API 文档:Overview (Apache Commons IO 2.13.0 API)
使用方法:将得到的 zip
压缩文件解压后,将 commons-io-2.13.0.jar
(应以实际下载的版本为准)放入项目文件夹中。然后,在 IDEA 的项目资源管理器右键该 jar
包,选择 Add as Library...
(添加为库)即可。
Commons IO 概览:这里主要介绍两个工具类:FileUtils
和 IOUtils
。分别用于操作文件 / IO 流。
FileUtils
:文件工具类,用于操作文件,类中所有方法均为静态方法。
该类提供了以下功能:
- 写出文件;
- 读取文件;
- 创建多级目录;
- 复制文件和目录;
- 删除文件和目录;
- URL 互转;
- 基于过滤器和扩展名列出子文件和子目录;
- 比较文件内容;
- 归档最后更改日期;
- 计算校验和;
篇幅有限,这里仅列出部分方法,详见 Commons IO API 文档。
方法 | 描述 |
---|---|
void copyFile(File srcFile, File destFile) |
复制文件 |
void copyFileToDirectory(File srcFile, File destDir) |
将文件复制到另一个文件夹下 |
void copyDirectory(File srcDir, File destDir) |
复制文件夹 |
void copyDirectoryToDirectory(File srcDir, File destDir) |
将文件夹复制到另一个文件夹下 |
void deleteDirectory(File directory) |
删除文件夹 |
void cleanDirectory(File directory) |
清空文件夹 |
String readFileToString(File file, Charset charsetName) |
将文件中数据读取成字符串 |
void write(File file, CharSequence data, Charset charsetName, boolean append) |
写出数据 |
long sizeOf(File file) BigInteger sizeOfAsBigInteger(File file) long sizeofDirectory(File directory) BigInteger sizeOfDirectoryAsBigInteger(File directory) |
计算文件/文件夹大小 ( long 可能有溢出风险) |
IOUtils
:IO 工具类,用于操作 IO 流,类中的方法都为静态方法。
篇幅有限,这里仅列出部分方法,详见 Commons IO API 文档。
方法 | 描述 |
---|---|
int copy(InputStream input, OutputStream output) int copy(InputStream input, OutputStream output, int bufferSize) |
复制文件 |
int copyLarge(InputStream inputStream, OutputStream outputStream) int copyLarge(InputStream inputStream, OutputStream outputStream, byte[] buffer) |
复制大文件 (大于 2 GB) |
List<String> readLines(InputStream input, Charset charset) List<String> readLines(InputStream input, String charsetName) List<String> readLines(Reader reader) |
读取数据,每行一个条目 |
void write(String data, OutputStream output, Charset charset) void write(String data, OutputStream output, String charsetName) |
写出数据 |
此外,包中还有一个操作文件名的工具类 FilenameUtils
,详见 Commons IO API 文档。
4-10.2 Hutool
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
官方网站:Hutool — 🍬A set of tools that keep Java sweet.
Hutool 简介:简介 | Hutool
Hutool API:Overview (hutool - Gitee.com))
Hutool 工具包可以用于解决许多在开发过程中遇到的小问题。由于篇幅有限,这里不做过多介绍,详见 Hutool API。
适用于 IO 流的 API 封装在 cn.hutool.core.io
中,包括:
IoUtil
流操作工具类FileUtil
文件读写和操作的工具类。FileTypeUtil
文件类型判断工具类WatchMonitor
目录、文件监听,封装了JDK1.7中的WatchServiceClassPathResource
针对ClassPath中资源的访问封装FileReader
封装文件读取(与 JDK 中的发生命名冲突,注意导入包时包的所在位置)FileWriter
封装文件写入(与 JDK 中的发生命名冲突,注意导入包时包的所在位置)