Hutool官方文档
2025-05-13 15:02:45 0 举报
AI智能生成
Hutool是一个Java工具类库,为Java开发者提供各类实用的工具类,从而简化编程工作,提高开发效率。其核心内容包括日期时间操作、加密解密、文件系统操作、网络工具、JSON处理等多种功能模块。文档详细介绍了各个模块的用途、配置方法以及API的使用说明。不论对于初学者还是资深开发者,Hutool都提供了易于理解且实用的文件类型处理和数据操作解决方案,助力代码优化与快速开发。
作者其他创作
大纲/内容
ALL(Hutool-all)
概述
BOM(Hutool-bom)
概述
由来
介绍
使用
import方式
exclude方式
核心(Hutool-core)
克隆
支持泛型的克隆接口和克隆类
我们解决什么问题
泛型克隆接口
泛型克隆类
深克隆
类型转换
类型转换工具类-Convert
自定义类型转换-ConverterRegistry
由来
解决
自定义转换
ConverterRegistry单例和对象模式
日期时间
概述
介绍
日期时间工具
日期枚举
月份枚举
时间枚举
日期时间工具-DateUtil
由来
方法
转换
Date、long、Calendar之间的相互转换
字符串转日期
格式化日期输出
获取Date对象的某个部分
开始和结束时间
日期时间偏移
日期时间差
格式化时间差
星座和属相
其它
日期时间对象-DateTime
由来
说明
使用
新建对象
使用对象
对象的可变性
格式化为字符串
农历日期-ChineseDate
介绍
使用
LocalDateTime工具-LocalDateTimeUtil
介绍
使用
计时器工具-TimeInterval
介绍
使用
IO流相关
概述
由来
封装
流扩展
IO工具类-IoUtil
由来
方法
拷贝
Stream转Reader、Writer
读取流中的内容
写入到流
关闭
文件工具类-FileUtil
简介
文件类型判断-FileTypeUtil
由来
使用
原理和局限性
自定义类型
文件监听-WatchMonitor
由来
WatchMonitor
内部应用
使用
监听指定事件
监听全部事件
延迟处理监听事件
文件
文件读取-FileReader
文件写入-FileWriter
文件追加-FileAppender
文件跟随-Tailer
文件名工具-FileNameUtil
资源
概述
由来
定义
资源工具-ResourceUtil
介绍
使用
ClassPath资源访问-ClassPathResource
什么是ClassPath
由来
封装
工具类
概述
包含内容
字符串工具-StrUtil
由来
方法
1. hasBlank、hasEmpty方法
2. removePrefix、removeSuffix方法
3. sub方法
4. str、bytes方法
5. format方法
6. 定义的一些常量
16进制工具-HexUtil
介绍
用于
使用
Escape工具-EscapeUtil
介绍
方法
Hash算法-HashUtil
介绍
方法
URL工具-URLUtil
介绍
方法
获取URL对象
其它
XML工具-XmlUtil
由来
使用
读取XML
写XML
创建XML
XML操作
XML与对象转换
Xpath操作
总结
对象工具-ObjectUtil
由来
方法
默认值
ObjectUtil.equal
ObjectUtil.length
ObjectUtil.contains
判断是否为null
克隆
序列化和反序列化
判断基本类型
反射工具-ReflectUtil
介绍
使用
获取某个类的所有方法
获取某个类的指定方法
构造对象
执行方法
泛型类型工具-TypeUtil
介绍
方法
getClass
getParamType
getReturnType
getTypeArgument
分页工具-PageUtil
由来
使用
transToStartEnd
totalPage
分页彩虹算法
剪贴板工具-ClipboardUtil
介绍
使用
通用方法
针对文本
针对Image对象(图片)
类工具-ClassUtil
类处理工具 ClassUtil
getShortClassName
isAllAssignableFrom
isPrimitiveWrapper
isBasicType
getPackage
scanPackage方法
getClassPaths方法
getJavaClassPaths方法
getClassLoader和getContextClassLoader方法
getDefaultValue
其它
类加载工具-ClassLoaderUtil
介绍
方法
获取ClassLoader
getContextClassLoader
getClassLoader
加载Class
loadClass
isPresent
枚举工具-EnumUtil
介绍
方法
getNames
getFieldValues
getEnumMap
getNameFieldMap
命令行工具-RuntimeUtil
介绍
方法
基础方法
快捷方法
使用
数字工具-NumberUtil
由来
使用
加减乘除
保留小数
decimalFormat
是否为数字
随机数
整数列表
其它
数组工具-ArrayUtil
介绍
方法
判空
ArrayUtil.isEmpty(a);
ArrayUtil.isNotEmpty(a);
新建泛型数组
String[] newArray = ArrayUtil.newArray(String.class, 3);
调整大小
ArrayUtil.resize
合并数组
ArrayUtil.addAll
克隆
Integer[] cloneB = ArrayUtil.clone(b);
int[] clone = ArrayUtil.clone(a);
有序列表生成
ArrayUtil.range
拆分数组
ArrayUtil.split
过滤
Integer[] a = {1,2,3,4,5,6};
Integer[] filter = ArrayUtil.filter(a, (Editor<Integer>) t -> (t % 2 == 0) ? t : null);
// [2,4,6]
编辑
Integer[] a = {1, 2, 3, 4, 5, 6};
Integer[] filter = ArrayUtil.filter(a, (Editor<Integer>) t -> (t % 2 == 0) ? t * 10 : t);
// [1, 20, 3, 40, 5, 60]
zip
String[] keys = {"a", "b", "c"};
Integer[] values = {1,2,3};
Map<String, Integer> map = ArrayUtil.zip(keys, values, true);
//{a=1, b=2, c=3}
是否包含元素
ArrayUtil.contains
包装和拆包
ArrayUtil.wrap和ArrayUtil.unwrap
判断对象是否为数组
ArrayUtil.isArray
转为字符串
ArrayUtil.toString, ArrayUtil.join
ByteBuffer转数组
ArrayUtil.toArray
随机工具-RandomUtil
说明
使用
唯一ID工具-IdUtil
介绍
使用
UUID
ObjectId
Snowflake
压缩工具-ZipUtil
由来
方法
Zip
压缩
解压
Gzip
Zlib
常见问题
引用工具-ReferenceUtil
介绍
方法
create
正则工具-ReUtil
由来
使用
ReUtil.extractMulti
String content = "ZZZaaabbbccc中文1234";
String resultExtractMulti = ReUtil.extractMulti("(\\w)aa(\\w)", content, "$1-$2");
Assert.assertEquals("Z-a", resultExtractMulti);
ReUtil.delFirst
String content = "ZZZaaabbbccc中文1234";
String resultDelFirst = ReUtil.delFirst("(\\w)aa(\\w)", content);
Assert.assertEquals("ZZbbbccc中文1234", resultDelFirst);
ReUtil.findAll
String content = "ZZZaaabbbccc中文1234";
List<String> resultFindAll = ReUtil.findAll("\\w{2}", content, 0, new ArrayList<String>());
// 结果:["ZZ", "Za", "aa", "bb", "bc", "cc", "12", "34"]
ReUtil.getFirstNumber
Integer resultGetFirstNumber = ReUtil.getFirstNumber(content);
// 结果:1234
ReUtil.isMatch
String content = "ZZZaaabbbccc中文1234";
boolean isMatch = ReUtil.isMatch("\\w+[\u4E00-\u9FFF]+\\d+", content);
Assert.assertTrue(isMatch);
ReUtil.replaceAll
String content = "ZZZaaabbbccc中文1234";
//此处把1234替换为 ->1234<-
String replaceAll = ReUtil.replaceAll(content, "(\\d+)", "->$1<-");
Assert.assertEquals("ZZZaaabbbccc中文->1234<-", replaceAll);
ReUtil.escape
String escape = ReUtil.escape("我有个$符号{}");
// 结果:我有个\\$符号\\{\\}
身份证工具-IdcardUtil
由来
介绍
isValidCard 验证身份证是否合法
convert15To18 身份证15位转18位
getBirthByIdCard 获取生日
getAgeByIdCard 获取年龄
getYearByIdCard 获取生日年
getMonthByIdCard 获取生日月
getDayByIdCard 获取生日天
getGenderByIdCard 获取性别
getProvinceByIdCard 获取省份
使用
信息脱敏工具-DesensitizedUtil
介绍
使用
DesensitizedUtil.idCardNum("51343620000320711X", 1, 2);
// 5***************1X
DesensitizedUtil.mobilePhone("18049531999");
// 180****1999
DesensitizedUtil.password("1234567890");
// **********
社会信用代码工具-CreditCodeUtil
介绍
使用
校验
String testCreditCode = "91310110666007217T";
CreditCodeUtil.isCreditCode(testCreditCode);
// true
随机社会信用代码
final String s = CreditCodeUtil.randomCreditCode();
SPI加载工具-ServiceLoaderUtil
介绍
使用
语言特性
概述
介绍
HashMap扩展-Dict
由来
介绍
使用
创建
Dict dict = Dict.create()
.set("key1", 1)//int
.set("key2", 1000L)//long
.set("key3", DateTime.now());//Date
获取指定类型的值
Long v2 = dict.getLong("key2");//1000
单例工具-Singleton
为什么会有这个类
使用
总结
断言-Assert
由来
介绍
使用
更多方法
isTrue 是否True
isNull 是否是null值,不为null抛出异常
notNull 是否非null值
notEmpty 是否非空
notBlank 是否非空白符
notContain 是否为子串
notEmpty 是否非空
noNullElements 数组中是否包含null元素
isInstanceOf 是否类实例
isAssignable 是子类和父类关系
state 会抛出IllegalStateException异常
二进码十进数-BCD
介绍
方法
控制台打印封装-Console
由来
使用
字段验证器-Validator
作用
使用
判断验证
异常验证
字符串格式化-StrFormatter
由来
使用
//通常使用
String result1 = StrFormatter.format("this is {} for {}", "a", "b");
Assert.assertEquals("this is a for b", result1);
//转义{}
String result2 = StrFormatter.format("this is \\{} for {}", "a", "b");
Assert.assertEquals("this is {} for a", result2);
//转义\
String result3 = StrFormatter.format("this is \\\\{} for {}", "a", "b");
Assert.assertEquals("this is \\a for b", result3);
树结构
树结构工具-TreeUtil
介绍
使用
定义结构
构建Tree
自定义字段名
JavaBean
概述
概述
Bean工具-BeanUtil
什么是Bean
方法
是否为Bean对象
内省 Introspector
Bean属性注入
Bean转为Map
Bean转Bean
Alias注解
DynaBean
介绍
使用
创建
操作
invoke
表达式解析-BeanPath
由来
原理
使用
Bean描述-BeanDesc
介绍
使用
字段getter方法获取
字段属性赋值
空检查属性获取-Opt
介绍
使用
学习
集合类
概述
介绍
Iterator相关帮助类
集合工具-CollUtil
介绍
join 方法
sortPageAll、sortPageAll2方法
sortEntrySetToList方法
popPart方法
append方法
7. resize方法
addAll方法
sub方法
isEmpty、isNotEmpty方法
zip方法
列表工具-ListUtil
介绍
使用
过滤列表
获取满足指定规则所有的元素的位置
拆分
编辑元素
查找位置
列表截取
排序
元素交换
Iterator工具-IterUtil
来源
方法介绍
有界优先队列-BoundedPriorityQueue
简介
线程安全的HashSet-ConcurrentHashSet
简介
使用
集合串行流工具-CollStreamUtil
介绍
使用
集合转Map
分组
转换提取
合并
行遍历器-LineIter
介绍
使用
Map
概述
由来
使用
特殊Map
工具
Map工具-MapUtil
介绍
方法
双向查找Map-BiMap
介绍
使用
可重复键值Map-TableMap
介绍
使用
Codec编码
Base62编码解码-Base62
介绍
使用
Base64编码解码-Base64
介绍
使用
Base32编码解码-Base32
介绍
使用
莫尔斯电码-Morse
介绍
实现
编码
解码
BCD码-BCD
介绍
使用
回转N位密码-Rot
介绍
使用
Punycode实现-PunyCode.md
介绍
使用
文本操作
CSV文件处理工具-CsvUtil
介绍
使用
读取CSV文件
读取为CsvRow
读取为Bean列表
生成CSV文件
乱码问题
可复用字符串生成器-StrBuilder
介绍
使用
多次构建字符串性能测试
Unicode编码转换工具-UnicodeUtil
介绍
使用
字符串转Unicode符
Unicode转字符串
字符串切割-StrSplitter
由来
方法
基础方法
特殊方法
注解
注解工具-AnnotationUtil
介绍
使用
方法介绍
比较器
概述
介绍
提供的比较器
其它比较器
比较工具-CompareUtil
介绍
版本比较器-VersionComparator
介绍
使用
异常
异常工具-ExceptionUtil
介绍
方法
包装异常
获取入口方法
异常转换
其他方法
其它异常封装
介绍
异常类
数学
数学相关-MathUtil
介绍
方法
线程和并发
线程工具-ThreadUtil
由来
原理
方法
ThreadUtil.execute
ThreadUtil.newExecutor
ThreadUtil.execAsync
ThreadUtil.newCompletionService
ThreadUtil.newCountDownLatch
ThreadUtil.sleep
ThreadUtil.getStackTrace
其它
自定义线程池-ExecutorBuilder
由来
概念
线程池对待线程的策略
workQueue线程池策略
使用
高并发测试-ConcurrencyTester
由来
使用
图片
图片工具-ImgUtil
介绍
方法介绍
scale 缩放图片
cut 剪裁图片
slice 按照行列剪裁切片(将图片分为20行和20列)
convert 图片类型转换,支持GIF->JPG、GIF->PNG、PNG->JPG、PNG->GIF(X)、BMP->PNG等
gray 彩色转为黑白
pressText 添加文字水印
pressImage 添加图片水印
rotate 旋转图片
flip 水平翻转图片
图片编辑器-Img
介绍
方法介绍
图像切割
图片压缩
网络
网络工具-NetUtil
由来
介绍
使用
URL生成器-UrlBuilder
由来
使用
完整构建
中文编码
解析
特殊URL解析
源码编译
源码编译工具-CompilerUtil.md
介绍
使用
配置文件(Hutool-setting)
概述
由来
Setting
Props
设置文件-Setting
简介
配置文件格式example.setting
代码
Properties扩展-Props
介绍
使用
日志(Hutool-log)
概述
由来
已有门面存在问题
特点
原理
使用
常规使用
自定义日志实现
日志工厂-LogFactory
介绍
使用
获取当前类对应的Log对象:
自定义日志实现
自定义日志工厂(自定义日志门面实现)
静态调用日志-StaticLog
由来
使用
与LogFactory同名方法
疑惑解答
问:
答:
缓存(Hutool-cache)
概述
来源
介绍
FIFOCache
LFUCache
LRUCache
TimedCache
WeakCache
FileCach
缓存工具-CacheUtil
概述
使用
先入先出-FIFOCache
介绍
使用
最少使用-LFUCache
介绍
使用
最近最久未使用-LRUCache
介绍
使用
超时-TimedCache
介绍
使用
弱引用-WeakCache
介绍
使用
文件缓存-FileCache
介绍
实现
使用
JSON(Hutool-json)
概述
为何集成
介绍
JSON工具-JSONUtil
介绍
使用
JSON字符串创建
JSON字符串解析
XML字符串转换为JSON
JSON转换为XML
JSON转Bean
readXXX
其它方法
JSON对象-JSONObject
介绍
使用
创建
转换
1. JSON字符串解析
2. JavaBean解析
JSON数组-JSONArray
介绍
使用
创建
从Bean列表解析
从JSON字符串解析
转换为bean的List
转换为Dict的List
转换为数组
JSON路径
加密解密(Hutool-crypto)
概述
Hutool-crypto概述
加密解密工具-SecureUtil
介绍
方法介绍
对称加密
摘要算法
非对称加密
UUID
密钥生成
对称加密-SymmetricCrypto
介绍
使用
通用使用
DESede实现
AES封装
DES封装
SM4
非对称加密-AsymmetricCrypto
介绍
使用
基本使用
自助生成密钥对
案例
案例一:
其它算法
ECIES
摘要加密-Digester
介绍
摘要算法介绍
Hutool支持的摘要算法类型
摘要算法
使用
Digester
更多摘要算法
SM3
消息认证码算法-HMac
介绍
HMAC介绍
Hutool支持的算法类型
Hmac算法
使用
HMac
更多HMac算法
签名和验证-Sign
介绍
使用
国密算法工具-SmUtil
介绍
使用
引入Bouncy Castle依赖
非对称加密SM2
摘要加密算法SM3
对称加密SM4
DFA查找(Hutool-dfa)
概述
由来
思路
DFA介绍
DFA查找
使用
1. 构建关键词树
2. 查找关键词
针对特殊字符
数据库(Hutool-db)
概述
由来
整体的架构
CRUD的封装 Db SqlConnRunner SqlRunner
各种结果集处理类 handler
对象解释
1. Entity
2. Table Column
数据库简单操作-Db
由来
使用
1、添加配置文件
2、引入MySQL JDBC驱动jar
3、增删改查
增
删
改
查
支持事务的CRUD-Session
介绍
Session创建
事务CRUD
数据源配置db.setting样例
介绍
基本配置样例
HikariCP
Druid
Tomcat JDBC Pool
C3P0(不推荐)
DBCP(不推荐)
数据源工厂-DsFactory
释义
基本使用
1. 引入连接池的jar
2. 编写配置文件
1. 基本连接信息
2. 连接池特有配置信息
3. 获取数据源
4. 直接创建数据源
5. 创建简单数据源
高级实用
1. 自定义连接池
2. 自定义配置文件
3. 多数据源
1. 多个配置文件分别获得数据源
2. 在同一配置文件中使用分组隔离不同的数据源配置:
结语
SQL执行器-SqlExecutor
介绍
使用
案例1-导出Blob字段图像
需求
环境
编码
数据库配置:src/main/resources/config/db.setting
代码:PicTransfer.java
public class PicTransfer
Method
public static void main(String[] args) throws SQLException
private static void save(ResultSet rs) throws SQLException
常见问题
问题描述:no suitable driver found for jdbc
NoSQL数据库客户端封装
Redis客户端封装-RedisDS
介绍
使用
引入依赖
<dependency>
<groupId>
<artifactId>
<version>
配置
构建
MongoDB客户端封装-MongoDS
介绍
使用
引入依赖
<dependency>
<groupId>
<artifactId>
<version>
配置
使用
HTTP客户端(Hutool-http)
概述
由来
介绍
Hutool-http优点
使用
更多
Http客户端工具类-HttpUtil
概述
使用
请求普通页面
文件上传
下载文件
更多有用的工具方法
更多请求参数
Http请求-HttpRequest
介绍
使用
普通表单
Restful请求
配置代理
其它自定义项
Http响应-HttpResponse
介绍
使用
获取响应状态码
获取响应头信息
HTML工具类-HtmlUtil
由来
方法
HtmlUtil.escape
HtmlUtil.unescape
HtmlUtil.removeHtmlTag
HtmlUtil.cleanHtmlTag
HtmlUtil.unwrapHtmlTag
HtmlUtil.removeHtmlAttr
HtmlUtil.removeAllHtmlAttr
HtmlUtil.filter 过滤HTML文本,防止XSS攻击
UA工具类-UserAgentUtil
由来
使用
获取UA信息
判断终端是否为移动终端
常用Http状态码-HttpStatus
介绍
常见问题
Received fatal alert: handshake_failure 错误
案例1-爬取开源中国的开源资讯
介绍
开始
分析页面
模拟Http请求爬取页面
结语
WebService
Soap客户端-SoapClient
由来
使用
扩展
查看生成的请求XML
多参数或复杂参数
Server
简易Http服务器-SimpleServer
由来
使用
简单的文件服务器
读取请求和返回内容
文件上传
JWT(Hutool-jwt)
概述
由来
JWT介绍
结构
使用
JWT生成
JWT解析
JWT验证
JWT工具-JWTUtil
介绍
使用
JWT签名工具-JWTSignerUtil
介绍
对称签名
非对称签名
依赖于BounyCastle的算法
使用
创建预定义算法签名器
创建自定义算法签名器
自行实现算法签名器
JWT验证-JWTValidator
介绍
使用
验证算法
验证时间
网络Socket(Hutool-socket)
概述
模块介绍
Socket介绍
Hutool封装
NIO封装-NioServer和NioClient
由来
使用
服务端
客户端
AIO封装-AioServer和AioClient
由来
使用
服务端
客户端
图形验证码(Hutool-captcha)
概述
由来
介绍
实现类
LineCaptcha 线段干扰的验证码
CircleCaptcha 圆圈干扰验证码
ShearCaptcha 扭曲干扰验证码
写出到浏览器(Servlet输出)
自定义验证码
系统调用(Hutool-system)
系统属性调用-SystemUtil
概述
Java Virtual Machine Specification信息
Java Virtual Machine Implementation信息
Java Specification信息
Java Implementation信息
Java运行时信息
系统信息
用户信息
当前主机网络地址信息
运行时信息,包括内存总大小、已用大小、可用大小等
Oshi封装-OshiUtil
概述
使用
Office文档操作(Hutool-poi)
概述
由来
介绍
使用
引入POI依赖
常见问题
Excel工具-ExcelUtil
介绍
使用
后续
Excel读取-ExcelReader
介绍
使用
流方式读取Excel2003-Excel03SaxReader
介绍
使用
定义行处理器
ExcelUtil快速读取
构建对象读取
流方式读取Excel2007-Excel07SaxReader
介绍
使用
定义行处理器
ExcelUtil快速读取
构建对象读取
Excel生成-ExcelWriter
由来
原理
使用例子
1. 将行列对象写出到Excel
2. 写出Map数据
3. 写出Bean数据
4. 自定义Bean的key别名(排序标题)
5. 写出到流
6. 写出到客户端下载(写出到Servlet)
自定义Excel
1. 设置单元格背景色
2. 自定义字体
3. 写出多个sheet
4. 更详细的定义样式
5. 自定义写出的值
Excel大数据生成-BigExcelWriter
介绍
使用
Word生成-Word07Writer
由来
介绍
使用例子
脚本(Hutool-script)
概述
介绍
Script工具-ScriptUtil
介绍
使用
切面(Hutool-aop)
概述
Hutool-aop概述
切面代理工具-ProxyUtil
使用
使用JDK的动态代理实现切面
使用Cglib实现切面
其它方法
原理
布隆过滤(Hutool-bloomFilter)
概述
介绍
使用
扩展(Hutool-extra)
概述
由来
介绍
模板引擎封装工具类
Servlet封装
Jsch库封装(SSH和Sftp)
Apache Commons Net封装(FTP部分)
邮件封装
Zxing封装(二维码)
邮件工具-MailUtil
概述
使用
引入依赖
邮件服务器配置
发送邮件
其它
自定义邮件服务器
使用SSL加密方式发送邮件
针对QQ邮箱和Foxmail邮箱的说明
针对QQ邮箱(foxmail)PKIX path building failed错误(since 5.6.4)
二维码工具-QrCodeUtil
由来
使用
引入zxing
生成二维码
自定义参数(since 4.1.2)
基本参数设定
附带logo小图标
调整纠错级别
识别二维码
Servlet工具-ServletUtil
由来
使用
加入依赖
方法
模板引擎
模板引擎封装-TemplateUtil
介绍
原理
使用
从字符串模板渲染内容
从classpath查找模板渲染
其它方式查找模板
Jsch封装
Jsch(SSH)工具-JschUtil
由来
使用
引入jsch
使用
ssh连接到远程主机
端口映射
其它方法
FTP
FTP客户端封装-Ftp
介绍
使用
引入依赖
使用
主动模式与被动模式
简易FTP服务器-SimpleFtpServer
介绍
使用
引入FtpServer
使用
Emoji表情
Emoji工具-EmojiUtil
由来
使用
加入依赖
使用
中文分词
中文分词封装-TokenizerUtil
介绍
原理
使用
解析文本并分词
自定义模板引擎
Spring
Spring工具-SpringUtil
由来
使用
注册SpringUtil
获取指定Bean
Cglib
Cglib工具-CglibUtil
介绍
使用
引入Cglib
使用
关于性能
拼音
拼音工具-PinyinUtil
介绍
使用
引入库
使用
压缩
压缩封装-CompressUtil
介绍
使用
压缩文件
解压文件
表达式引擎
表达式引擎封装-ExpressionUtil
介绍
使用
执行表达式
自定义引擎执行
创建自定义引擎
定时任务(Hutool-cron)
概述
由来
介绍
全局定时任务-CronUtil
介绍
使用
1、配置文件
2、启动
3、关闭
更多选项
秒匹配和年匹配
动态添加定时任务
0 条评论
下一页