概述:官网docs/01.指南/01.快速入门/01.简介.md · Looly/hutool-doc-handy - Gitee.com
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
现在让我们动手实践一下
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
模块 | 介绍 |
---|---|
hutool-aop | JDK动态代理封装,提供非IOC下的切面支持 |
hutool-bloomFilter | 布隆过滤,提供一些Hash算法的布隆过滤 |
hutool-cache | 简单缓存实现 |
hutool-core | 核心,包括Bean操作、日期、各种Util等 |
hutool-cron | 定时任务模块,提供类Crontab表达式的定时任务 |
hutool-crypto | 加密解密模块,提供对称、非对称和摘要算法封装 |
hutool-db | JDBC封装后的数据操作,基于ActiveRecord思想 |
hutool-dfa | 基于DFA模型的多关键字查找 |
hutool-extra | 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等) |
hutool-http | 基于HttpUrlConnection的Http客户端封装 |
hutool-log | 自动识别日志实现的日志门面 |
hutool-script | 脚本执行封装,例如Javascript |
hutool-setting | 功能更强大的Setting配置文件和Properties封装 |
hutool-system | 系统参数调用封装(JVM信息等) |
hutool-json | JSON实现 |
hutool-captcha | 图片验证码实现 |
hutool-poi | 针对POI中Excel和Word的封装 |
hutool-socket | 基于Java的NIO和AIO的Socket封装 |
hutool-jwt | JSON Web Token (JWT)封装实现 |
第一步:创建一个项目
pom文件:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.24</version>
</dependency>
AI 代码解读
第二步:编写代码
代码如下:
package org.cyl.test04;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.resource.ClassPathResource;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.http.HttpUtil;
import java.io.File;
import java.util.List;
public class HutoolExample {
public static void main(String[] args) {
// 字符串操作
String str = "Hutool is a tool for Java.";
String result = StrUtil.sub(str, 0, 10);
Console.log("SubString: {}", result);
// 文件操作
File file = FileUtil.file("D:\\csdnwork\\test04\\src\\main\\resources\\static\\text.txt");
FileUtil.writeUtf8String("Hello Hutool", file);
// 集合操作
List<String> list1 = CollUtil.newArrayList("Hutool", "Java", "Tool");
List<String> list2 = CollUtil.newArrayList("Easy", "Effective");
List<String> newList = (List<String>) CollUtil.addAll(list1, list2);
Console.log("New List: {}", newList);
// 加密
String test = SecureUtil.md5("Hello Hutool");
Console.log("MD5: {}", test);
// 加密
RSA rsa = new RSA();
String originalText = "Hello Hutool";
byte[] encryptResult = rsa.encrypt(originalText, KeyType.PublicKey);
Console.log("Encrypted: {}", encryptResult);
// 解密
byte[] decryptResult = rsa.decrypt(encryptResult, KeyType.PrivateKey);
String decryptedText = new String(decryptResult);
Console.log("Decrypted: {}", decryptedText);
// 日期时间处理
String dateStr = "2022-01-22";
Console.log("Date: {}", DateUtil.parse(dateStr));
// 网络操作
String response = HttpUtil.get("https://www.baidu.com");
Console.log("HTTP Response: {}", response);
// 读取Classpath下的资源文件
ClassPathResource resource = new ClassPathResource("/static/index.html");
String content = resource.readStr(CharsetUtil.CHARSET_UTF_8);
Console.log("Resource Content: {}", content);
}
}
AI 代码解读
这段代码是一个Java程序,使用了Hutool工具库进行字符串、文件、集合、加密、解密、日期时间处理、网络操作和读取Classpath下的资源文件的操作。下面是对每个部分的解析:
字符串操作:
StrUtil.sub(str, 0, 10)
:截取字符串str
的前10个字符,并将结果赋值给变量result
。Console.log("SubString: {}", result)
:将截取后的字符串输出到控制台。
文件操作:
File file = FileUtil.file("D:\\csdnwork\\test04\\src\\main\\resources\\static\\text.txt")
:创建一个文件对象,表示路径为"D:\csdnwork\test04\src\main\resources\static\text.txt"的文件。FileUtil.writeUtf8String("Hello Hutool", file)
:将字符串"Hello Hutool"写入到文件中。
集合操作:
List<String> list1 = CollUtil.newArrayList("Hutool", "Java", "Tool")
:创建一个包含三个元素的字符串列表list1
。List<String> list2 = CollUtil.newArrayList("Easy", "Effective")
:创建一个包含两个元素的字符串列表list2
。List<String> newList = (List<String>) CollUtil.addAll(list1, list2)
:将list1
和list2
合并成一个新的列表newList
。Console.log("New List: {}", newList)
:将合并后的列表输出到控制台。
加密:
String test = SecureUtil.md5("Hello Hutool")
:使用MD5算法对字符串"Hello Hutool"进行加密,并将加密后的结果赋值给变量test
。Console.log("MD5: {}", test)
:将加密后的结果输出到控制台。
加密:
RSA rsa = new RSA()
:创建一个RSA加密对象。String originalText = "Hello Hutool"
:定义一个原始文本字符串。byte[] encryptResult = rsa.encrypt(originalText, KeyType.PublicKey)
:使用公钥对原始文本进行加密,并将加密后的结果赋值给字节数组encryptResult
。Console.log("Encrypted: {}", encryptResult)
:将加密后的结果输出到控制台。
解密:
byte[] decryptResult = rsa.decrypt(encryptResult, KeyType.PrivateKey)
:使用私钥对加密后的结果进行解密,并将解密后的结果赋值给字节数组decryptResult
。String decryptedText = new String(decryptResult)
:将解密后的字节数组转换为字符串。Console.log("Decrypted: {}", decryptedText)
:将解密后的字符串输出到控制台。
日期时间处理:
String dateStr = "2022-01-22"
:定义一个日期字符串。Console.log("Date: {}", DateUtil.parse(dateStr))
:将日期字符串解析为日期对象,并输出到控制台。
网络操作:
String response = HttpUtil.get("https://www.baidu.com")
:发送HTTP GET请求到指定的URL(百度首页),并将响应内容赋值给字符串变量response
。Console.log("HTTP Response: {}", response)
:将HTTP响应内容输出到控制台。
读取Classpath下的资源文件:
ClassPathResource resource = new ClassPathResource("/static/index.html")
:创建一个ClassPathResource对象,表示路径为"/static/index.html"的资源文件。String content = resource.readStr(CharsetUtil.CHARSET_UTF_8)
:读取资源文件的内容,并将其转换为UTF-8编码的字符串。Console.log("Resource Content: {}", content)
:将资源文件的内容输出到控制台。