Commons IO 框架详解
Commons IO
是 Apache 提供的 Java IO 工具库,它简化了 文件、流 和 路径 的操作,提高开发效率,减少 try-catch-finally
代码。
✅ 1. 依赖导入
📌 1.1 Maven 依赖
1 2 3 4 5
| <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.15.0</version> </dependency>
|
📌 1.2 手动下载
从 Apache 官网 下载 JAR 包,添加到 lib
目录。
- 在项目中创建一个文件夹:lib
- 将commons-io-2.6.jar文件复制到lib文件夹
- 在jar文件上点右键,选择“Add as library”,点击OK
- 在类中导包使用
✅ 2. Commons IO 核心工具类
以下是 Commons IO
提供的 核心工具类 及其作用:
工具类 |
作用 |
FileUtils |
文件操作(复制、删除、读取、写入等) |
IOUtils |
流操作(复制、关闭、转换等) |
FilenameUtils |
文件路径操作(获取扩展名、文件名等) |
FileSystemUtils |
磁盘空间信息 |
LineIterator |
逐行读取文件 |
✅ 3. FileUtils(文件操作)
方法 |
作用 |
示例 |
copyFile(File src, File dest) |
复制文件 |
FileUtils.copyFile(new File("a.txt"), new File("b.txt")); |
copyDirectory(File src, File dest) |
复制目录 |
FileUtils.copyDirectory(new File("D:/source"), new File("D:/dest")); |
readFileToString(File file, String encoding) |
读取文件内容 |
String content = FileUtils.readFileToString(new File("test.txt"), "UTF-8"); |
write(File file, String data, String encoding) |
写入文件 |
FileUtils.write(new File("output.txt"), "Hello", "UTF-8"); |
forceDelete(File file) |
删除文件或目录 |
FileUtils.forceDelete(new File("unwanted.txt")); |
deleteDirectory(File directory) |
删除整个目录 |
FileUtils.deleteDirectory(new File("D:/oldFolder")); |
✅ 4. IOUtils(流操作)
方法 |
作用 |
示例 |
toString(InputStream in, String encoding) |
读取输入流 |
String content = IOUtils.toString(new FileInputStream("test.txt"), "UTF-8"); |
copy(InputStream in, OutputStream out) |
复制流 |
IOUtils.copy(new FileInputStream("a.txt"), new FileOutputStream("b.txt")); |
closeQuietly(Closeable closeable) |
关闭流(不抛异常) |
IOUtils.closeQuietly(inputStream); |
✅ 5. FilenameUtils(文件路径操作)
方法 |
作用 |
示例 |
getExtension(String filename) |
获取文件扩展名 |
String ext = FilenameUtils.getExtension("test.txt"); // txt |
getBaseName(String filename) |
获取文件名(无扩展名) |
String name = FilenameUtils.getBaseName("test.txt"); // test |
getFullPath(String filename) |
获取完整路径 |
String path = FilenameUtils.getFullPath("D:/folder/test.txt"); // D:/folder/ |
✅ 6. FileSystemUtils(磁盘空间信息)
方法 |
作用 |
示例 |
freeSpaceKb(String path) |
获取磁盘剩余空间(KB) |
long space = FileSystemUtils.freeSpaceKb("C:"); |
✅ 7. LineIterator(逐行读取文件)
方法 |
作用 |
示例 |
FileUtils.lineIterator(File file, String encoding) |
逐行读取大文件 |
见下方示例 |
📌 逐行读取示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; import java.io.File; import java.io.IOException;
public class LineIteratorExample { public static void main(String[] args) throws IOException { File file = new File("largeFile.txt"); LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try { while (it.hasNext()) { System.out.println(it.nextLine()); } } finally { it.close(); } } }
|
🔹 适用场景:
- 适合读取大文件,防止
OutOfMemoryError
。
- 替代
BufferedReader
,代码更简洁。
✅ 8. 总结
工具类 |
功能 |
FileUtils |
文件操作(复制、删除、读取、写入) |
IOUtils |
流操作(复制、关闭、转换) |
FilenameUtils |
路径解析(获取文件名、扩展名) |
FileSystemUtils |
磁盘空间查询 |
LineIterator |
逐行读取大文件 |
📌 Commons IO
极大简化了 Java IO 操作,是 Java 开发的必备工具! 🚀