Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅
Hutool = Hu + tool,是原公司项目底层代码剥离后的开源库,“Hu”是公司名称的表示,tool表示工具。Hutool谐音“糊涂”,一方面简洁易懂,一方面寓意“难得糊涂”
cn.hutool Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。
以计算MD5为例:
【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用
【现在】引入Hutool -> SecureUtil.md5()
Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug
hutool主要内容包括:
1.判断函数 (isNotBlank系列)
StringUtils.isEmpty 等价于 str == null || str.length == 0
StringUtils.isBlank 等价于 str == null || str.length == 0 || str.trim().length == 0
StringUtils.isNotEmpty等价于 a != null && a.length > 0
StringUtils.isNotBlank 等价于 a != null && a.length > 0 && str.trim().length > 0
2.生产唯一uuid
IdUtil.getSnowflake(1,2);
3.httpClient
tring result2 = HttpRequest.post(url)
4.定时任务CronUtil.start()
5 二维码
//生成指定url对应的二维码到文件,宽和高都是300像素
QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("d:/qrcode.jpg"));
6.Excel操作工具封装
ExcelReader reader = ExcelUtil.getReader(FileUtil.file("test.xlsx"));
7.验证码生成和校验功能 ICaptcha
createCode 创建验证码,实现类需同时生成随机验证码字符串和验证码图片
getCode 获取验证码的文字内容
verify 验证验证码是否正确,建议忽略大小写
write 将验证码写出到目标流中
8.Socket功能
9.JWT
JWT创建
JWT解析
JWT验证
- JsonUtil
JSONUtil.toJsonStr可以将任意对象(Bean、Map、集合等)直接转换为JSON字符串
11.加密解密工具-SecureUtil
SecureUtil主要针对常用加密算法构建快捷方式,还有提供一些密钥生成的快捷工具方法
对称加密
SecureUtil.aes
SecureUtil.des
摘要算法
SecureUtil.md5
SecureUtil.sha1
SecureUtil.hmac
SecureUtil.hmacMd5
SecureUtil.hmacSha1
非对称加密
SecureUtil.rsa
SecureUtil.dsa
UUID
SecureUtil.simpleUUID 方法提供无“-”的UUID
密钥生成
SecureUtil.generateKey 针对对称加密生成密钥
SecureUtil.generateKeyPair 生成密钥对(用于非对称加密)
SecureUtil.generateSignature 生成签名(用于非对称加密)
12.日期转换
Date、long、Calendar之间的相互转换
//当前时间
Date date = DateUtil.date();
//当前时间
Date date2 = DateUtil.date(Calendar.getInstance());
//当前时间
Date date3 = DateUtil.date(System.currentTimeMillis());
//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();
字符串转日期
DateUtil.parse方法会自动识别一些常用格式,包括:
yyyy-MM-dd HH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy.MM.dd HH:mm:ss
yyyy年MM月dd日 HH时mm分ss秒
yyyy-MM-dd
yyyy/MM/dd
yyyy.MM.dd
HH:mm:ss
HH时mm分ss秒
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS
yyyyMMddHHmmss
yyyyMMddHHmmssSSS
yyyyMMdd
EEE, dd MMM yyyy HH:mm:ss z
EEE MMM dd HH:mm:ss zzz yyyy
yyyy-MM-dd'T'HH:mm:ss'Z'
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
yyyy-MM-dd'T'HH:mm:ssZ
13.IO流
IO工具类的存在主要针对InputStream、OutputStream、Reader、Writer封装简化
14.类型转换
long[] b = {1,2,3,4,5};
//bStr为:"[1, 2, 3, 4, 5]"
String bStr = Convert.toStr(b);
15.工具类
字符串工具-StrUtil
16进制工具-HexUtil
Escape工具-EscapeUtil
Hash算法-HashUtil
URL工具-URLUtil
XML工具-XmlUtil
对象工具-ObjectUtil
反射工具-ReflectUtil
泛型类型工具-TypeUtil
分页工具-PageUtil
剪贴板工具-ClipboardUtil
类工具-ClassUtil
类加载工具-ClassLoaderUtil
枚举工具-EnumUtil
命令行工具-RuntimeUtil
数字工具-NumberUtil
数组工具-ArrayUtil
随机工具-RandomUtil
唯一ID工具-IdUtil
压缩工具-ZipUtil
引用工具-ReferenceUtil
正则工具-ReUtil
身份证工具-IdcardUtil
信息脱敏工具-DesensitizedUtil
社会信用代码工具-CreditCodeUtil
SPI加载工具-ServiceLoaderUtil
16.集合类工具
17.Map工具