hutool工具的简单使用

简介: 这篇文章介绍了Hutool工具库的基本使用,通过代码示例展示了如何利用Hutool进行字符串处理、文件操作、集合操作、加密解密、日期时间处理、网络请求和读取资源文件等常见任务。

概述:官网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>

第二步:编写代码

代码如下:

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);
    }
}

这段代码是一个Java程序,使用了Hutool工具库进行字符串、文件、集合、加密、解密、日期时间处理、网络操作和读取Classpath下的资源文件的操作。下面是对每个部分的解析:

  1. 字符串操作:

    • StrUtil.sub(str, 0, 10):截取字符串str的前10个字符,并将结果赋值给变量result
    • Console.log("SubString: {}", result):将截取后的字符串输出到控制台。
  2. 文件操作:

    • 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"写入到文件中。
  3. 集合操作:

    • 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):将list1list2合并成一个新的列表newList
    • Console.log("New List: {}", newList):将合并后的列表输出到控制台。
  4. 加密:

    • String test = SecureUtil.md5("Hello Hutool"):使用MD5算法对字符串"Hello Hutool"进行加密,并将加密后的结果赋值给变量test
    • Console.log("MD5: {}", test):将加密后的结果输出到控制台。
  5. 加密:

    • RSA rsa = new RSA():创建一个RSA加密对象。
    • String originalText = "Hello Hutool":定义一个原始文本字符串。
    • byte[] encryptResult = rsa.encrypt(originalText, KeyType.PublicKey):使用公钥对原始文本进行加密,并将加密后的结果赋值给字节数组encryptResult
    • Console.log("Encrypted: {}", encryptResult):将加密后的结果输出到控制台。
  6. 解密:

    • byte[] decryptResult = rsa.decrypt(encryptResult, KeyType.PrivateKey):使用私钥对加密后的结果进行解密,并将解密后的结果赋值给字节数组decryptResult
    • String decryptedText = new String(decryptResult):将解密后的字节数组转换为字符串。
    • Console.log("Decrypted: {}", decryptedText):将解密后的字符串输出到控制台。
  7. 日期时间处理:

    • String dateStr = "2022-01-22":定义一个日期字符串。
    • Console.log("Date: {}", DateUtil.parse(dateStr)):将日期字符串解析为日期对象,并输出到控制台。
  8. 网络操作:

    • String response = HttpUtil.get("https://www.baidu.com"):发送HTTP GET请求到指定的URL(百度首页),并将响应内容赋值给字符串变量response
    • Console.log("HTTP Response: {}", response):将HTTP响应内容输出到控制台。
  9. 读取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):将资源文件的内容输出到控制台。

结果展示

目录
相关文章
|
NoSQL 安全 Linux
Linux|minio对象存储服务的部署和初步使用总结
Linux|minio对象存储服务的部署和初步使用总结
1140 0
|
编译器 索引
[Eigen中文文档] 块操作
本文介绍了块操作。块是matrix或array的部分矩形元素。块表达式既可以用作右值也可以用作左值。与Eigen表达式一样,如果让编译器进行优化,则块操作的运行时间成本为零。
537 0
|
前端开发
jeecgboot数据权限用法
jeecgboot数据权限用法
1844 0
jeecgboot数据权限用法
|
11月前
|
SQL XML Java
MyBatis Mapper中使用limit参数的查询问题
总结而言,MyBatis中使用 `limit`参数的查询可以高度定制并且灵活,基于方法签名和XML映射文件的组合来达成多样化的查询需求。通过参数化查询和动态SQL,MyBatis可以有效地处理各种复杂情境下的数据库操作,并且将SQL语句的维护与业务代码的编写相分离,提升代码的可维护性和可阅读性。
866 13
|
存储 人工智能 API
AgentScope:阿里开源多智能体低代码开发平台,支持一键导出源码、多种模型API和本地模型部署
AgentScope是阿里巴巴集团开源的多智能体开发平台,旨在帮助开发者轻松构建和部署多智能体应用。该平台提供分布式支持,内置多种模型API和本地模型部署选项,支持多模态数据处理。
15046 78
AgentScope:阿里开源多智能体低代码开发平台,支持一键导出源码、多种模型API和本地模型部署
|
JSON API 开发者
shopee商品列表API接口获取步骤
虾皮(Shopee)商品列表 API 接口用于获取平台商品信息,支持按店铺 ID、类目、关键词等筛选条件查询商品数据,包括商品基本信息、图片、描述等。接口具备灵活性、数据丰富及分页机制等特点,满足电商数据分析与管理需求。示例代码展示了通过 Python 请求 API 获取某店铺商品列表的过程,包含请求头设置、参数定义及异常处理等功能,便于开发者快速上手使用。
|
前端开发 Java
在springboot项目中实现将上传的jpg图片类型转为pdf并保存到本地
使用uniapp的uni.canvasToTempFilePath方法,将canvas内容转为jpg并上传至服务器。后端接收到jpg文件后,通过Java的PDFBox库进行处理。代码包括:选取画板内容为jpg,转换为临时文件路径,基于此路径生成File对象并上传,服务器端利用PDFBox处理上传的jpg文件。依赖:PDFBox 2.0.8。
438 3
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
1088 2
2024年5月node.js安装(winmac系统)保姆级教程

热门文章

最新文章