当前位置:首页 > Java技术 > 强大的Java辅助类工具箱Hutool

强大的Java辅助类工具箱Hutool

2022年09月16日 10:28:40Java技术6

什么是Hutool

Hutool是一个Java工具包,也就是一个工具箱,一个utils集合,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以简单粗暴。Hutool最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。

Hutool功能

一个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 扩展模块,对第三方封装(模板引擎、邮件等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如Javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现

Maven引入

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

实用方法推荐

具体的使用方法可以到hutool.mydoc.io去探索,这里列举几个。

1、Http客户端工具类-HttpUtil

//POST请求栗子:
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");
String result= HttpUtil.post("https://www.baidu.com", paramMap);

//文件上传只需将参数中的键指定(默认file),值设为文件对象即可,对于使用者来说,文件上传与普通表单提交并无区别
paramMap.put("file", FileUtil.file("D:\\face.jpg"));
String result= HttpUtil.post("https://www.baidu.com", paramMap);
  • HttpUtil.encode和HttpUtil.decode 两个方法封装了JDK的URLEncoder.encode和URLDecoder.decode方法,可以方便的对URL参数进行URL编码和解码。
  • HttpUtil.toParams和HttpUtil.decodeParams 两个方法是将Map参数转为URL参数字符串和将URL参数字符串转为Map对象
  • HttpUtil.urlWithForm是将URL字符串和Map参数拼接为GET请求所用的完整字符串使用

2、Bean工具-BeanUtil

基于BeanUtil.fillBean方法Hutool还提供了Map对象键值对注入Bean,其方法有:

  • BeanUtil.fillBeanWithMap
  • BeanUtil.fillBeanWithMapIgnoreCase

同时提供了map转bean的方法,与fillBean不同的是,此处并不是传Bean对象,而是Bean类,Hutool会自动调用默认构造方法创建对象。当然,前提是Bean类有默认构造方法(空构造),这些方法有:

  • BeanUtil.mapToBean

  • BeanUtil.mapToBeanIgnoreCase
    在Java Web应用中,我们经常需要将ServletRequest对象中的参数注入bean(http表单数据),BeanUtil类提供了两个便捷方法:

  • BeanUtil.fillBeanWithRequestParam 将http表单数据注入Bean对象

  • BeanUtil.requestParamToBean 将http表单数据注入新建的Bean对象

Bean转为Map

  • BeanUtil.beanToMap方法则是将一个Bean对象转为Map对象。

Bean转Bean

  • Bean之间的转换主要是相同属性的复制,因此方法名为copyProperties。
  • BeanUtil.copyProperties方法同样提供一个CopyOptions参数用于自定义属性复制。

3、日期时间工具-DateUtil

DateUtil.parse方法会自动识别一些常用格式,包括:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss.SSS

String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);

我们也可以使用自定义日期格式转化:

String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

格式化日期输出

String dateStr = "2018-05-01";
Date date = DateUtil.parse(dateStr);


//结果 2018/05/01
String format = DateUtil.format(date, "yyyy/MM/dd");

//常用格式的格式化,结果:2018-05-01
String formatDate = DateUtil.formatDate(date);

//结果:2017-05-01 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);

//昨天
DateUtil.yesterday()
//明天
DateUtil.tomorrow()
//上周
DateUtil.lastWeek()
//下周
DateUtil.nextWeek()
//上个月
DateUtil.lastMonth()
//下个月
DateUtil.nextMonth()

日期时间差

有时候我们需要计算两个日期之间的时间差(相差天数、相差小时数等等),Hutool将此类方法封装为between方法:

String dateStr1 = "2017-03-01 22:33:23";
Date date1 = DateUtil.parse(dateStr1);

String dateStr2 = "2017-04-01 23:33:23";
Date date2 = DateUtil.parse(dateStr2);

//相差一个月,31天
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
有时候我们希望看到易读的时间差,比如XX天XX小时XX分XX秒,此时使用DateUtil.formatBetween方法:

//Level.MINUTE表示精确到分
String formatBetween = DateUtil.formatBetween(between, Level.MINUTE);
//输出:31天1小时
Console.log(formatBetween);

其他时间

//年龄
DateUtil.ageOfNow("1990-01-30");

//是否闰年
DateUtil.isLeapYear(2017);

4、XML工具-XmlUtil

在日常编码中,我们接触最多的除了JSON外,就是XML格式了,一般而言,我们首先想到的是引入Dom4j包,却不知JDK已经封装有XML解析和构建工具:w3c dom。但是由于这个API操作比较繁琐,因此Hutool中提供了XmlUtil简化XML的创建、读和写的过程。

读取XML:

  • XmlUtil.readXML 读取XML文件
  • XmlUtil.parseXml 解析XML字符串为Document对象

写XML:

  • XmlUtil.toStr 将XML文档转换为String
  • XmlUtil.toFile 将XML文档写入到文件

节点读取操作:

  • XmlUtil.cleanInvalid 除XML文本中的无效字符
  • XmlUtil.getElements 根据节点名获得子节点列表
  • XmlUtil.getElement 根据节点名获得第一个子节点
  • XmlUtil.elementText 根据节点名获得第一个子节点
  • XmlUtil.transElements 将NodeList转换为Element列表

XML与对象转换:

  • writeObjectAsXml 将可序列化的对象转换为XML写入文件,已经存在的文件将被覆盖。
  • readObjectFromXml 从XML中读取对象。

5、ExcelUtil

  • 从文件中读取Excel为ExcelReader
ExcelReader reader = ExcelUtil.getReader(FileUtil.file("test.xlsx"));
  • 从流中读取Excel为ExcelReader(比如从ClassPath中读取Excel文件)
ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));

ExcelReader reader;

  • //通过sheet编号获取
reader = ExcelUtil.getReader(FileUtil.file("test.xlsx"), 0);
  • //通过sheet名获取
reader = ExcelUtil.getReader(FileUtil.file("test.xlsx"), "sheet1");
  • 读取大数据量的Excel
private RowHandler createRowHandler() {
    return new RowHandler() {
        @Override
        public void handle(int sheetIndex, int rowIndex, List<Object> rowlist) {
            Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);
        }
    };
}
 ExcelUtil.readBySax("aaa.xlsx", 0, createRowHandler());

@@@好了,大概就是这样。更具体的内容可以到官网和wiki去挖
http://www.hutool.cn/
http://hutool.mydoc.io

作者:Moshow郑锴
来源链接:https://blog.csdn.net/moshowgame/article/details/80087954

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/41768.html

分享给朋友:

“强大的Java辅助类工具箱Hutool” 的相关文章

java中常用的日期工具类

java中常用的日期工具类

java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util; import java.text.ParseException; import java.text.SimpleDateF...

java学习~Arrays工具类

Arrays工具类Arrays类的概述及其常用的方法1、位于java.util包中2、概述:Arrays类是针对数组进行操作的工具类,提供了排序和查找等功能3、常用的方法: 1、public static String toString(int [] a)   作用:将任意类型的...

Java Zip 基于内存实现压缩和解压 附可用工具类

Java Zip 基于内存实现压缩和解压 附可用工具类

欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!!   Zip是常用的无损压缩算法实现,Java中提供了Zip的实现,本文演示基于内存的方式进行压缩和解压,演示只针对一层目录结构进行,多层目录只需递归操作进行即可。...

扩展:JAVA 常用框架和工具思维导图

扩展:JAVA 常用框架和工具思维导图

作者:He BianGu 来源链接:https://blog.csdn.net/u010975589/article/details/80885509...

Java集合工具类Collections详解

Java集合工具类Collections详解

Java集合工具类Collections详解 1、Collections介绍 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 2、...

java 常用工具类Collection集合

常用的工具类封装,用来获取集合的交集等。 /** * 初始化ArrayList * * @param elements * @return */ @SafeVarargs public static &...

java的常用包

java的常用包如下: java的核心都在java的包以及其子包下,而java的扩展类都放在javax包以及其子包下。其实这些类就是我们常说以及常用的API。 java语言常用包如下:   1. java.lang 这个包下包含了ja...

164 01 Android 零基础入门  03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法

164 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法

164 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法 本文知识点:终止finally执行的方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关...

170 01 Android 零基础入门  03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结

170 01 Android 零基础入门 03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结

170 01 Android 零基础入门 03 Java常用工具类01 Java异常 08 Java异常总结 01 异常总结 本文知识点:异常总结 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了...

java包小结

java.lang.*  提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。java.util.*  包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。