一、简介
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅
官方文档: https://www.hutool.cn/docs/#/
二、包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
可以通过引入hutool-all方式引入所有模块,但还是不建议引入所有模块,因为绝大部分功能项目可能都用不上,建议只引入你需要的模块。
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version>
</dependency>
hutool工具使用
1.NumberUtil 数字工具类
parseInt()//string转int
parseLong()//string转Long
add()//精确加法
sub()//精确减法
div()//精确除法
mul()//精确乘法
isGreater()//比较大小,返回布尔值
equals()//比较是否相等
round()//保留几位小数
isNumber()//是否为数字
isInteger()//是否是整数
isPrimes()//是否为质数
2.ArrayUtil 数组工具类
isEmpty()//数组是否为空
insert()//将新元素插入到到已有数组中的某个位置
addAll()//将多个数组合并在一起
copy()//数组复制
split()//拆分数组为几个等份
nullToEmpty()//数组元素中的null转换为""
contains()//数组中是否包含元素
isArray()//对象是否为数组对象
sub()//获取子数组
join()//指定分隔符将数组转换为字符串
reverse()//反转数组
min()//取最小值
max()//取最大值
swap()//交换数组中两个位置的值
distinct()//去重数组中的元素,去重后生成新的数组,原数组不变
3.ClassUtil 类工具类
getClassName()//获取类名对象
loadClass()//加载类
invoke()//执行方法
4.IdUtil ID生成器工具类
fastSimpleUUID()//简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID
createSnowflake()//返回Snowflake算法生成器,使用snowflake.nextId()生成下一个id
5.PhoneUtil 手机号工具类
isMobile()//验证是否为手机号码(中国)
isTel()//验证是否为座机号码(中国)
hideBefore()//隐藏手机号前7位 替换字符为"*"
hideBetween()//隐藏手机号中间4位 替换字符为"*"
hideAfter()//隐藏手机号最后4位 替换字符为"*"
subBefore()//获取手机号前3位
6.RandomUtil 随机工具类
randomInt()//获得指定范围内的随机数
randomEle()//随机获得列表中的元素
randomEleSet()//随机获得列表中的一定量的不重复元素,返回Set
randomString()//获得一个随机的字符串
randomNumbers()//获得一个只包含数字的字符串
randomDate()//以给定日期为基准,随机产生一个日期
7.ReflectUtil 反射工具类
getConstructor()//查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为true
getFieldName()//获取字段名
getField()//查找指定类中的指定name的字段
getFieldValue()//获取字段值
setFieldValue()//设置字段值
getPublicMethod()//查找指定Public方法
getMethod()//查找指定方法
newInstance()//实例化对象
invoke()//执行方法
8.ReUtil 正则相关工具类
getGroup0()//获得匹配的字符串,获得正则中分组0的内容
get()//获得匹配的字符串
getAllGroups()//获得匹配的字符串匹配到的所有分组
delFirst()//删除匹配的第一个内容
delAll()//删除匹配的全部内容
delPre()//删除正则匹配到的内容之前的字符
findAll()//取得内容中匹配的所有结果
count()//计算指定字符串中匹配的个数
contains()//指定内容中是否有表达式匹配的内容
replaceAll()//正则替换指定值
9.StrUtil 字符串工具类
isBlank()//字符串是否为空白
isEmpty()//字符串是否为空
startWith()//字符串是否以给定字符开始
endWith()//字符串是否以给定字符结尾
contains()//指定字符是否在字符串中出现过
genSetter()//生成set方法名
genGetter()//生成get方法名
removeAll()//移除字符串中所有给定字符串
removeAny()//移除字符串中所有给定字符串,当某个字符串出现多次,则全部移除
upperFirst()//大写首字母
lowerFirst()//小写首字母
strip()//去除两边的指定字符串
cleanBlank()//清理空白字符
maxLength()//限制字符串长度,如果超过指定长度,截取指定长度并在末尾加"..."
subBetween()//截取指定字符串中间部分,不包括标识字符串
repeat()//重复某个字符
format()//格式化文本, {} 表示占位符
utf8Str()//将对象转为字符串
join()//指定分隔符将多个对象转换为字符串
toUnderlineCase()//将驼峰式命名的字符串转换为下划线方式
toSymbolCase()//将驼峰式命名的字符串转换为使用符号连接方式
toCamelCase()//将下划线方式命名的字符串转换为驼峰式
padPre()//前面补充字符串以满足最小长度
padAfter()//后面补充字符串以满足最小长度
center()//居中字符串,两边补充指定字符串
builder()//创建StringBuilder对象
getReader()//获得StringReader
getWriter()//获得StringWriter
count()//统计指定内容中包含指定字符串的数量
cut()//将字符串切分为N等份
indexOf()//指定范围内查找指定字符
reverse()//反转字符串
replace()//替换字符串中的指定字符串
hide()//替换指定字符串的指定区间内字符为"*"
similar()//计算两个字符串的相似度
concat()//连接多个字符串为一个
10.URLUtil URL统一资源定位符相关工具类
url()//通过一个字符串形式的URL地址创建URL对象
getURL()//获得URL
getHost()//获取URL中域名部分
encode()//编码URL,默认使用UTF-8编码
getPath()//获得path部分
normalize()//标准化URL字符串
11.XmlUtil XML工具类
readXML()//读取解析XML文件
parseXml()//将String类型的XML转换为XML文档
toStr()//将XML文档转换为String
format()//格式化XML输出
toFile()//将XML文档写入到文件
write()//将XML文档写出
createXml()//创建XML文档
getRootElement()//获得XML文档根节点
getElements()//根据节点名获得子节点列表
getElement()//根据节点名获得第一个子节点
12.BeanUtil Bean工具类
getFieldValue()//获得字段值,通过反射直接获得字段值,并不调用getXXX方法
setFieldValue()//设置字段值,,通过反射设置字段值,并不调用setXXX方法
mapToBean()//Map转换为Bean对象
fillBeanWithMap()//使用Map填充Bean对象
toBean()//对象或Map转Bean
beanToMap()//对象转Map
copyProperties()//按照Bean对象属性创建对应的Class对象,并忽略某些属性
13.CollUtil 集合相关工具类
union()//多个集合的并集
unionDistinct()//多个集合的非重复并集
intersection()//多个集合的交集
disjunction()//两个集合的差集
subtract()//计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素
contains()//判断指定集合是否包含指定值
join()//指定分隔符将集合转换为字符串
distinct()//去重集合
sub()//截取集合的部分
split()//对集合按照指定长度分段
filter()//过滤,此方法产生一个新集合
indexOfAll()//获取匹配规则定义中匹配到元素的所有位置
addAll()//将指定对象全部加入到集合中
addAllIfNotContains()//将另一个列表中的元素加入到列表中,如果列表中已经存在此元素则忽略之
sort()//排序集合
forEach()//循环遍历
reverse()//反序给定List,会在原List基础上直接修改
reverseNew()//反序给定List,会创建一个新的List,原List数据不变
max()//取最大值
min()//取最小值
14.CalendarUtil 针对Calendar对象封装工具类
calendar()//转换为Calendar对象
truncate()//修改日期为某个时间字段起始时间
round()//修改日期为某个时间字段四舍五入时间
ceiling()//修改日期为某个时间字段结束时间
yearAndQuarter()//获得指定日期区间内的年份和季度
compare()//安全的Calendar比较
age()//计算指定生日在某年的年龄
formatChineseDate()//将指定Calendar时间格式化为纯中文形式
parseByPatterns()//通过给定的日期格式解析日期时间字符串
15.DateUtil 时间工具类
date()//当前时间
current()//当前时间的时间戳
now()//当前时间,格式 yyyy-MM-dd HH:mm:ss
today()//当前日期,格式 yyyy-MM-dd
year()//获得年的部分
month()//获得月份,从0开始计数
weekOfYear()//获得指定日期是所在年份的第几周
weekOfMonth()//获得指定日期是所在月份的第几周
dayOfMonth()//获得指定日期是这个日期所在月份的第几天
dayOfYear()//获得指定日期是这个日期所在年的第几天
dayOfWeek()//获得指定日期是星期几,1表示周日,2表示周一
hour()//获得指定日期的小时数部分
minute()//获得指定日期的分钟数部分
second()//获得指定日期的秒数部分
millsecond()//获得指定日期的毫秒数部分
format()//根据特定格式格式化日期
formatChineseDate()//格式化为中文日期格式
parse()//构建DateTime对象
yesterday()//昨天
tomorrow()//明天
lastWeek()//上周
nextWeek()//下周
lastMonth()//上个月
offsetDay()//偏移天
offsetHour()//偏移小时
offsetMinute//偏移分钟
offset()//获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
between()//判断两个日期相差的时长,只保留绝对值
betweenDay()//判断两个日期相差的天数
betweenMonth()//计算两个日期相差月数
betweenYear()//计算两个日期相差年数
formatBetween()//格式化日期间隔输出
timer()//计时器
isExpired()//判定在指定检查时间是否过期
timeToSecond()//HH:mm:ss 时间格式字符串转为秒数
secondToTime()//秒数转为时间格式(HH:mm:ss)
range()//创建日期范围生成器
16.ImgUtil 图片处理工具类
scale()//缩放图像(按比例缩放)
cut()//图像切割(按指定起点坐标和宽高切割)
slice()//图像切片(指定切片的宽度和高度)
convert()//图像类型转换
gray()//彩色转为黑白
binary()//彩色转为黑白二值化图片
pressText()//给图片添加文字水印
pressImage()//给图片添加图片水印
rotate()//旋转图片为指定角度
flip()//水平翻转图像
compress()//压缩图像,输出图像只支持jpg文件
copyImage()//将已有Image复制新的一份出来
createImage()//根据文字创建图片
createFont()//根据文件创建字体
writeJpg()//写出图像为JPG格式
write()//按照目标格式写出图像
getReader()//获得ImageReader
read()//从文件中读取图片
randomColor()//生成随机颜色
backgroundRemoval()//背景移除
17.FileUtil 文件工具类
ls()//列出目录文件
loopFiles()//递归遍历目录以及子目录中的所有文件
listFileNames()//获得指定目录下所有文件
file()//创建File对象
exist()//判断文件是否存在
lastModifiedTime()//指定文件最后修改时间
size()//计算目录或文件的总大小
touch()//创建文件及其父目录
del()//删除文件或者文件夹
clean()//清空文件夹
mkdir()//创建文件夹
copyFile()//拷贝文件
copy()//复制文件或目录
rename()//修改文件或目录的文件名
getAbsolutePath()//获取绝对路径
equals()//检查两个文件是否是同一个文件
contentEquals()//比较两个文件内容是否相同
pathEquals()//文件路径是否相同
getName()//返回文件名
getSuffix()//获取文件后缀名,扩展名不带“.”
getPrefix()//返回主文件名
pathEndsWith()//判断文件路径是否有指定后缀,忽略大小写
getType()//根据文件流的头部信息获得文件类型
readString()//读取文件内容
readLines()//从文件中读取每一行数据
readLine()//单行处理文件内容
load()//按照给定的readerHandler读取文件中的数据
writeUtf8String()//将String写入文件,覆盖模式,字符集为UTF-8
writeString()//将String写入文件,覆盖模式
appendUtf8String()//将String写入文件,UTF-8编码追加模式
appendString()//将String写入文件,追加模式
writeLines()//将list写入文件,覆盖模式
appendLines()//将list写入文件,追加模式
writeMap()//将Map写入文件
getParent()//获取指定层级的父路径
tail()//文件内容跟随器
18.IoUtil IO工具类
copy()//将Reader中的内容复制到Writer中
read()//从流中读取内容
toStream()//转为流
write()//将byte[]写到流中
flush()//从缓存中刷出数据
close()//关闭
19.TreeUtil 树工具类
build()//树构建
20.ThreadUtil 线程池工具
newExecutor()//新建一个线程池
execute()//直接在公共线程池中执行线程
execAsync()//执行异步方法
newThread()//创建新线程
sleep()//挂起当前线程
createThreadLocal()//创建本地线程对象
interrupt()//结束线程
21.JSONUtil JSON工具类
createObj()//创建JSONObject
createArray()//创建 JSONArray
parseObj()//JSON字符串转JSONObject对象
parseArray()//JSON字符串转JSONArray
parse()//转换对象为JSON
toJsonStr()//转为JSON字符串
toBean()//JSON字符串转为实体类对象
toList()//将JSONArray转换为Bean的List
formatJsonStr()//格式化JSON字符串
22.ExcelUtil Excel工具类
readBySax()//通过Sax方式读取Excel
getReader()//获取Excel读取器
getWriter()//获得ExcelWriter