Hutool工具类使用说明

Hutool是一个Java工具类库,提供了丰富的功能模块,包括字符串处理、日期时间操作、IO流、加密解密、HTTP客户端等。以下是一些常用模块的具体使用方法。

字符串工具(StrUtil)

字符串处理是开发中的常见需求,StrUtil模块提供了高效的字符串操作方法。

// 判断字符串是否为空
boolean isEmpty = StrUtil.isEmpty(""); // true// 格式化字符串
String template = "姓名:{},年龄:{}";
String formatted = StrUtil.format(template, "张三", 25); // 姓名:张三,年龄:25// 截取字符串
String subStr = StrUtil.sub("Hello World", 0, 5); // "Hello"
日期时间工具(DateUtil)

DateUtil模块简化了日期时间的操作,支持日期解析、格式化、计算等功能。

// 字符串转日期
Date date = DateUtil.parse("2023-10-01");// 日期加减
Date newDate = DateUtil.offsetDay(date, 1); // 加1天// 格式化日期
String formattedDate = DateUtil.format(date, "yyyy/MM/dd"); // "2023/10/01"
文件IO工具(FileUtil)

FileUtil模块封装了常见的文件操作,如读写、复制、删除等。

// 读取文件内容
String content = FileUtil.readUtf8String("test.txt");// 写入文件
FileUtil.writeUtf8String("Hello Hutool", "output.txt");// 复制文件
FileUtil.copy("source.txt", "target.txt", true);

HTTP客户端工具(HttpUtil)

HttpUtil模块提供了简洁的HTTP请求方法,支持GET、POST等请求方式。

// GET请求
String response = HttpUtil.get("https://example.com");// POST请求
Map<String, Object> params = new HashMap<>();
params.put("name", "Hutool");
String postResponse = HttpUtil.post("https://example.com/api", params);

加密解密工具(SecureUtil)

SecureUtil模块支持多种加密算法,如MD5、SHA-1、AES等。

// MD5加密
String md5 = SecureUtil.md5("123456");// AES加密解密
String data = "Hello Hutool";
String key = "1234567812345678";
String encrypted = SecureUtil.aes(key.getBytes()).encryptHex(data);
String decrypted = SecureUtil.aes(key.getBytes()).decryptStr(encrypted);

集合工具(CollUtil)

CollUtil模块提供了集合操作的便捷方法,如判空、分组、过滤等。

List<String> list = Arrays.asList("a", "b", "c");// 集合判空
boolean isNotEmpty = CollUtil.isNotEmpty(list); // true// 分组
Map<Character, List<String>> grouped = CollUtil.groupByField(list, str -> str.charAt(0));
反射工具(ReflectUtil)

ReflectUtil模块简化了Java反射操作,支持动态调用方法、访问字段等。

// 调用方法
class TestClass {public void print(String msg) {System.out.println(msg);}
}
ReflectUtil.invoke(new TestClass(), "print", "Hello Reflection");// 访问字段
class TestField {private String name = "Hutool";
}
String name = (String) ReflectUtil.getFieldValue(new TestField(), "name");
验证码工具(CaptchaUtil)

CaptchaUtil模块可用于生成图形验证码,支持干扰线、扭曲等效果。

// 生成验证码
LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);
String code = captcha.getCode(); // 验证码文本
captcha.write("captcha.png"); // 保存验证码图片

BeanUtil:JavaBean操作工具

对象属性拷贝
将源对象的属性值拷贝到目标对象:

User srcUser = new User("张三", 25);
User targetUser = new User();
BeanUtil.copyProperties(srcUser, targetUser);

Map转JavaBean
将Map转换为JavaBean对象:

Map<String, Object> map = new HashMap<>();
map.put("name", "李四");
map.put("age", 30);
User user = BeanUtil.mapToBean(map, User.class, false);

复制插入

JavaBean转Map
将JavaBean对象转为Map:

User user = new User("王五", 28);
Map<String, Object> map = BeanUtil.beanToMap(user);


IdUtil:唯一ID生成工具

生成UUID
生成不带连字符的UUID

String uuid = IdUtil.simpleUUID();

生成Snowflake ID
基于Snowflake算法生成分布式ID(雪花算法)

long snowflakeId = IdUtil.getSnowflake().nextId();

生成ObjectId
MongoDB风格的ObjectId:

String objectId = IdUtil.objectId();

RandomUtil:随机数生成工具

生成随机整数
生成指定范围内的随机整数:

int randomInt = RandomUtil.randomInt(1, 100);

生成随机字符串
生成指定长度的随机字母数字字符串(可用在随机生成验证码)

String randomString = RandomUtil.randomString(10);

生成随机UUID
生成带连字符的标准UUID

String randomUUID = RandomUtil.randomUUID();


ZipUtil:压缩解压工具

压缩文件/目录
将文件或目录压缩为ZIP:

File file = new File("/path/to/file.txt");
File zipFile = ZipUtil.zip(file);

解压ZIP文件
解压ZIP到指定目录:

File zipFile = new File("/path/to/archive.zip");
File destDir = new File("/path/to/output");
ZipUtil.unzip(zipFile, destDir);

压缩到流
将文件压缩为ZIP并输出到:

File file = new File("/path/to/file.txt");
OutputStream out = new FileOutputStream("/path/to/output.zip");
ZipUtil.toZip(file, out);


以上方法均基于Hutool工具包的最新版本(建议使用5.8.x+)。具体使用时需确保引入依赖:

xml复制插入

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.20</version>
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917670.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917670.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917670.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js中Buffer的用法

// Buffer 与字符串的转换示例 // Buffer 是 Node.js 中用于处理二进制数据的类&#xff0c;字符串与 Buffer 之间的转换是常见操作// 1. 从字节数组创建 Buffer 并转换为字符串 // Buffer.from(array) 接收一个字节数值数组&#xff0c;创建对应的 Buffer let buf_4 Buffer.f…

【Java 基础】Java 源代码加密工具有哪些?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 中级 🙉八股文专题:剑指大厂,手撕 J…

es的histogram直方图聚合和terms分组聚合

你提到的这两个 Elasticsearch aggs 聚合语句&#xff1a;第一种&#xff1a;histogram 直方图聚合 "aggs": {"DayDiagram": {"histogram": {"field": "${FiledName}","interval": ${TimeInterval},"extende…

基于Java的AI/机器学习库(Smile、Weka、DeepLearning4J)的实用

基于Java和AI技术处理动漫视频 以下是一些基于Java和AI技术处理动漫视频(如《亚久斗》)的实用案例和实现方法,涵盖视频分析、风格转换、角色识别等方向。每个案例均提供技术思路和关键代码片段。 视频关键帧提取 使用OpenCV提取动漫视频中的关键帧,保存为图片供后续分析…

笔记本电脑联想T14重启后无法识别外置红米屏幕

【原先是可以连接重启后不行】按照以下步骤排查和解决&#xff1a;✅ 1. 基础排查确认连接方式&#xff1a;检查是否使用 USB-C转DP/HDMI线 或 HDMI/DP直连&#xff0c;尝试更换线缆或接口&#xff08;如换另一个USB-C口或HDMI口&#xff09;。测试显示器&#xff1a;将红米显示…

vue+ts 基础面试题 (一 )

目录 1.Vue3 响应式原理 一、 响应式的基本概念 二、 核心机制&#xff1a;Proxy 和依赖追踪 三、 触发更新的过程 四、 代码示例 五、 优势总结 2.如何实现组件间通信&#xff1f; 一、父子组件通信 1. 父传子&#xff1a;Props 传递 2. 子传父&#xff1a;自定义事…

Spring AI实战:SpringBoot项目结合Spring AI开发——提示词(Prompt)技术与工程实战详解

&#x1fa81;&#x1f341; 希望本文能给您带来帮助&#xff0c;如果有任何问题&#xff0c;欢迎批评指正&#xff01;&#x1f405;&#x1f43e;&#x1f341;&#x1f425; 文章目录一、前言二、提示词前置知识2.1 提示词要素2.2 设计提示词的通用技巧2.2.1 从简单开始2.2.…

【后端】Java static 关键字详解

在 Java 中&#xff0c;static 是一个修饰符&#xff0c;用于定义与类相关&#xff08;而非对象实例相关&#xff09;的成员。以下是核心知识点和用法&#xff1a;一、四大用途静态变量&#xff08;类变量&#xff09; 作用&#xff1a;属于类&#xff0c;而非实例。所有实例共…

算法训练营DAY50 第十一章:图论part01

98. 所有可达路径 98. 所有可达路径 【题目描述】 给定一个有 n 个节点的有向无环图&#xff0c;节点编号从 1 到 n。请编写一个程序&#xff0c;找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。 【输入描述】 第一行包含两个整数 N&#…

OpenCV:从入门到实战的全方位指南

目录 一、OpenCV 简介 &#xff08;一&#xff09;特点 &#xff08;二&#xff09;应用场景 二、OpenCV 的核心模块 &#xff08;一&#xff09;core 模块 &#xff08;二&#xff09;imgproc 模块 &#xff08;三&#xff09;video 模块 &#xff08;四&#xff09;f…

如何在 Ubuntu 24.04 上安装和配置 TFTP 服务器

了解如何在 Ubuntu 24.04 Linux 上安装 TFTP 以执行基本的文件传输。 简单文件传输协议(TFTP)是标准 FTP 的轻量级替代方案,用于在联网设备之间传输文件。与 FTP 和 HTTP 相比,TFTP 更简单,无需复杂的客户端-服务器模型即可操作。这就是为什么该协议用于执行基本文件传输…

基于 AXI-Lite 实现可扩展的硬件函数 RPC 框架(附完整源码)

AXI-Lite 实现RPC调用硬件函数服务 &#x1f44b; 本文介绍如何基于 AXI-Lite 总线设计一个通用的“硬件函数调用框架”。主机端&#xff08;PS&#xff09;只需通过寄存器写入参数与启动标志&#xff0c;即可触发 PL 模块执行指定算法逻辑&#xff0c;并将结果返回。 该机制本…

[spring-cloud: NamedContextFactory ClientFactoryObjectProvider]-源码阅读

依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId><version>4.3.0</version> </dependency>源码 NamedContextFactory NamedContextFactory 类通过创建多个子…

HBase MOB技术特点及使用场景介绍

在 HBase 2.0 版本之前,虽然 HBase 能够存储从 1 字节到 10MB 大小的二进制对象 ,但其读写路径主要针对小于 100KB 的值进行了优化。当面对大量大小在 100KB - 10MB 之间的数据时,传统的存储方式就会暴露出问题。例如,当存储大量的图片、文档或短视频等中等大小对象时,由于…

Ubuntu 配置密钥+密码登录

目录 1、密钥生成 2、发送公钥至 需要连接的服务器 3、选用私钥登录 1、密钥生成 ssh-keygen -t rsa -b 4096 -C "angindem"2、发送公钥至 需要连接的服务器 将.ssh中的id_rsa.pub 的密钥&#xff0c;放在authorized_keys中 注意&#xff1a;.ssh 文件夹一定赋予…

谷歌浏览器Chrome 缓存迁移

步骤 1&#xff1a;准备数据迁移1. 关闭 Chrome 及所有后台进程在任务管理器&#xff08;CtrlShiftEsc&#xff09;中结束所有 chrome.exe 进程。 2. 备份并移动原数据- 将 C:\Users\xxx\AppData\Local\Google\Chrome\User Data **整个文件夹**复制到新位置&#xff08;如 G:\…

Java中的RabbitMQ完全指南

Java中的RabbitMQ完全指南 1. 引言 什么是RabbitMQ RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;实现了高级消息队列协议&#xff08;AMQP&#xff09;。它充当应用程序之间的消息中间件&#xff0c;允许分布式系统中的不同组件进行异步通信。RabbitMQ使用Erlang语言…

【MCAL】AUTOSAR架构下SPI数据异步DMA收发具体实现

目录 前言 正文 1.依赖的硬件特性 1.1.SPI硬件特性 1.1.1. TXFIFO Single Move Mode 1.1.2. RXFIFO Single Move Mode 1.1.3. Move Counter模式 1.1.4. PT中断 1.2.IR硬件特性 1.3.DMA硬件特性 1.3.1. DMA通道硬件请求 1.3.2. DMA循环Buffer 1.3.3. DMA Link List …

【Unity】协程 Async

协程 协程是 Unity 内置的异步机制&#xff0c;通过 yield 暂停执行&#xff0c;实现任务在多帧中分段执行。与普通函数不同&#xff0c;协程可在执行过程中挂起和恢复&#xff0c;呈现"并发"效果&#xff0c;但本质上仍运行于主线程。若在协程中进行耗时操作&#…

《揭秘!10 分钟洞悉 Prompt、Function Calling、MCP 与 AI agent 奥秘》

Prompt、Function Calling、MCP、AI agent这些术语频繁闯入我们的视野&#xff0c;它们到底都是什么、有啥关系。只需十分钟&#xff0c;咱们抽丝剥茧&#xff0c;揭开它们的神秘面纱&#xff0c;轻松掌握这些关键概念 并了解AI agent 完整执行流程。 一、提示词&#xff08;P…