Hutool工具库核心工具类总结

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。

一、常用核心工具类

1. 字符串工具 - StrUtil

  • 判空操作isEmpty(), isNotEmpty(), isBlank(), isNotBlank()
  • 格式化format() 类似Slf4j的格式化
  • 截取sub(), subBefore(), subAfter()
  • 转换toCamelCase()(转驼峰), toUnderlineCase()(转下划线)
  • 填充padPre(), padAfter()

2. 日期时间工具 - DateUtil

  • 日期转换parse() 支持多种日期格式自动识别
  • 日期格式化format() 自定义输出格式
  • 日期计算
    DateUtil.offsetDay(new Date(), 3); // 3天后
    DateUtil.between(new Date(), endDate, DateUnit.DAY); // 计算日期间隔
    

3. 文件IO工具 - FileUtil

  • 文件操作
    FileUtil.touch("/path/to/file"); // 创建文件
    FileUtil.mkdir("/path/to/dir"); // 创建目录
    FileUtil.copy("/src", "/dest", true); // 复制文件/目录
    
  • 文件读写
    FileUtil.writeString("content", "/path/to/file", "UTF-8");
    String content = FileUtil.readString("/path/to/file", "UTF-8");
    

4. 集合工具 - CollUtil

  • 创建集合
    List<String> list = CollUtil.newArrayList("a", "b", "c");
    Map<String, Integer> map = CollUtil.newHashMap("key1", 1, "key2", 2);
    
  • 集合操作
    CollUtil.sortByProperty(list, "age"); // 按属性排序
    CollUtil.groupByField(list, "gender"); // 按字段分组
    

5. 类型转换工具 - Convert

  • 基础类型转换
    int i = Convert.toInt("123");
    Date date = Convert.toDate("2023-05-01");
    
  • 特殊转换
    String unicode = Convert.strToUnicode("你好");
    String hex = Convert.toHex("Hello".getBytes());
    

6. 加密解密工具 - SecureUtil

  • 摘要算法
    String md5 = SecureUtil.md5("password");
    String sha256 = SecureUtil.sha256("data");
    
  • 对称加密
    AES aes = SecureUtil.aes(key);
    String encrypted = aes.encryptHex("plaintext");
    

二、进阶工具类

7. HTTP客户端工具 - HttpUtil

// GET请求
String result = HttpUtil.get("https://example.com");

// POST表单
Map<String, Object> params = new HashMap<>();
params.put("key1", "value1");
String response = HttpUtil.post("https://example.com", params);

// 文件下载
HttpUtil.downloadFile("https://example.com/file.zip", "/local/path/");

8. 唯一ID生成工具 - IdUtil

String uuid = IdUtil.randomUUID(); // UUID
long snowflakeId = IdUtil.getSnowflake().nextId(); // 雪花ID
String objectId = IdUtil.objectId(); // MongoDB风格ID

9. 二维码工具 - QrCodeUtil

// 生成二维码到文件
QrCodeUtil.generate("https://hutool.cn", 300, 300, FileUtil.file("/path/qrcode.jpg"));

// 解析二维码
String content = QrCodeUtil.decode(FileUtil.file("/path/qrcode.jpg"));

10. Excel操作工具 - ExcelUtil

// 读取Excel
List<User> users = ExcelUtil.getReader("/path/users.xlsx").readAll(User.class);

// 写入Excel
ExcelWriter writer = ExcelUtil.getWriter("/path/output.xlsx");
writer.write(users, true);
writer.close();

三、特色工具类

11. 缓存工具 - CacheUtil

TimedCache<String, String> cache = CacheUtil.newTimedCache(1000 * 60);
cache.put("key", "value", 1000 * 30); // 30秒过期
String value = cache.get("key");

12. 定时任务工具 - CronUtil

CronUtil.schedule("0 0/5 * * * ?", (Runnable) () -> {
    System.out.println("每5分钟执行一次");
});
CronUtil.start();

13. 验证码工具 - CaptchaUtil

// 生成图形验证码
LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);
captcha.write("/path/captcha.png");

// 验证码校验
boolean valid = captcha.verify("userInput");

14. 系统信息工具 - OshiUtil

SystemInfo si = OshiUtil.getSystemInfo();
System.out.println("CPU使用率: " + si.getHardware().getProcessor().getSystemCpuLoad());
System.out.println("内存总量: " + si.getHardware().getMemory().getTotal());

四、使用建议

  1. 按需引入

    <!-- 只引入所需模块 -->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-http</artifactId>
        <version>5.8.12</version>
    </dependency>
    
  2. 避免滥用:对于简单操作,优先使用JDK原生方法

  3. 性能敏感场景:注意工具类的性能开销(如频繁IO操作)

  4. 异常处理:虽然工具类封装了异常,但关键操作仍需处理异常

五、最佳实践场景

场景推荐工具类优势
REST API开发HttpUtil + JSONUtil简化HTTP请求和JSON处理
数据处理CollUtil + BeanUtil简化集合操作和对象转换
文件操作FileUtil + IoUtil简化文件读写和流操作
定时任务CronUtil + ThreadUtil轻量级定时任务管理
系统监控OshiUtil + SystemUtil获取系统运行时信息

Hutool通过封装常用操作,使Java开发更高效优雅。但需注意:工具类不是万能的,理解底层原理更重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值