简介
# 📚简介
IO流模块(cn.hutool.v7.core.io)是 Hutool 提供的 IO 操作工具集合,封装了 JDK 中复杂的 IO 操作,提供了简洁易用的 API,旨在简化各种 IO 场景下的开发工作。
# JDK IO 操作的问题
JDK 原生的 IO 操作存在以下痛点:
- 代码冗长:需要编写大量的 try-catch-finally 代码来处理流的关闭
- 异常处理复杂:IOException 是检查异常,必须显式处理
- API 设计复杂:JDK IO API 设计较为复杂,学习成本高
- 性能优化困难:需要手动处理缓冲区、流的包装等性能优化
- 功能分散:文件操作、流操作、资源操作等功能分散在不同的类中
- 缺乏便捷的工具方法:缺少常用的 IO 操作便捷方法,如文件复制、读取等
# Hutool IO 模块的优势
Hutool 的 IO 模块通过封装常用的 IO 操作,解决了 JDK 原生 IO 操作的痛点:
- 简化的 API:提供简洁易用的 API,大幅减少代码量
- 自动关闭流:自动处理流的关闭,无需手动编写 try-catch-finally
- 运行时异常:将检查异常转换为运行时异常,简化异常处理
- 高性能:内置缓冲区优化,提供高效的 IO 操作
- 功能全面:涵盖文件操作、流操作、资源操作、序列化等各种 IO 场景
- 便捷的工具方法:提供丰富的便捷方法,如文件复制、读取、写入等
# 核心功能
- 流操作:提供流的读写、复制、转换等功能
- 文件操作:提供文件的创建、复制、移动、删除、遍历等功能
- 资源操作:提供资源的加载、读取、查找等功能
- 序列化:提供对象的序列化和反序列化功能
- NIO 支持:提供 NIO 相关的工具方法
- 文件监控:提供文件系统的监控功能
- 校验和计算:提供 CRC16、CRC8 等校验和计算功能
- 数据大小单位:提供数据大小单位的转换和格式化功能
# 主要类结构
核心工具类:
IoUtil:IO 流操作核心工具类,提供流的读写、复制、转换等功能FileUtil:文件操作核心工具类,提供文件的创建、复制、移动、删除等功能ResourceUtil:资源操作核心工具类,提供资源的加载、读取、查找等功能SerializeUtil:序列化工具类,提供对象的序列化和反序列化功能NioUtil:NIO 相关工具类,提供 NIO 操作的便捷方法ChecksumUtil:校验和工具类,提供 CRC16、CRC8 等校验和计算功能DataSizeUtil:数据大小单位工具类,提供数据大小的转换和格式化功能
子模块:
buffer:缓冲区相关工具类,提供高效的缓冲区实现checksum:校验和相关工具类copy:复制相关工具类,提供不同类型流的复制实现file:文件相关工具类和实现resource:资源相关工具类和实现stream:流相关工具类和实现unit:数据大小单位相关工具类watch:文件监控相关工具类
# 🔧 主要特性
- 自动关闭流:所有流操作都会自动关闭流,无需手动处理
- 运行时异常:将 IOException 转换为 IORuntimeException,简化异常处理
- 高性能:内置缓冲区优化,提供高效的 IO 操作
- 支持多种数据源:支持文件、流、字符串、URL 等多种数据源
- 丰富的工具方法:提供了大量常用的 IO 操作便捷方法
- 线程安全:核心工具类的方法都是线程安全的
- 良好的扩展性:设计了良好的接口和抽象类,方便扩展
通过 Hutool 的 IO 模块,可以大幅简化开发中的 IO 操作代码,提高代码的可读性和可维护性,同时获得更好的性能。