什么是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() {@Overridepublic 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

强大的Java辅助类工具箱Hutool相关推荐

  1. 5个强大的Java分布式缓存框架

    5个强大的Java分布式缓存框架 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来 ...

  2. php在线编辑器_8款功能强大的Java编辑器,建议收藏!「渡一教育」

    作为一名合格的程序员,每天打交道最多的除了手机,恐怕就是编辑器了,需要花费大量的时间投身于代码的海洋中,使用各种不同的IDE来开发代码. 对于程序员们来说,一款好用的编辑器,需要像自己的左右手一样.一 ...

  3. 强大的MATLAB机器人工具箱Matlab_Robotic_Toolbox_v9.8及教程

    强大的MATLAB机器人工具箱Matlab_Robotic_Toolbox_v9.8及教程 Matlab_Robotic_Toolbox_v9.8是一个功能强大的机器人工具箱,包含了机器人正.逆向运动 ...

  4. 强大的Java前台后台开发工具

    强大的Java前台后台开发工具 常用的文本编辑器:Sublime Text.Notepad++.EditPlus等 常用的IDE:WebStorm.Intellij IDEA.Eclipce等 我们这 ...

  5. java字节码编辑工具_2200 Star!功能强大的 Java 字节码编辑器!

    [导语]:Recaf是一款功能十分强大的Java字节码编辑器,基于objectweb的ASM构建,可以更好地显示文件的属性,并为字节码编辑提供方便. 简介 Recaf是一个易于使用的现代的Java字节 ...

  6. Java各种工具箱的使用

    Java各种工具箱的使用 [一]StrUtil (1)常用的方法 (2)hasBlank.hasEmpty方法 (3)sub方法 (4)去空格 回车操作 与空有关的方法 (5)字符串包含关系 (6)头 ...

  7. java分布式的缓存_5个强大的Java分布式缓存框架

    5个强大的Java分布式缓存框架 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来 ...

  8. Java 文件复制 Hutool IO使用

    文件读写操作 我要将这张照片复制一份. 原生Java代码方式 package com.hutool; import java.io.*; /*** @Author: crush* @Date: 202 ...

  9. Java工具类库Hutool,GitHub星标15k+

    简介 Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以"甜甜的".Hutool最初是我项目中"util& ...

  10. linux java 构建工具有哪些,Linux ant --强大的Java开发构建工具

    用途说明 ant严格说来,ant其实并非原生的Linux命令,但它是一个使用广泛.功能强大的跨平台构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具.ant命令一般 ...

最新文章

  1. bootcmd 和 bootargs 环境变量
  2. 子网掩码和网关的关系
  3. 第二阶段—个人工作总结03
  4. Linux curl使用简单介绍 (转)
  5. PHP和MySQL Web开发从新手到高手,第9天-总结
  6. 6.高性能MySQL --- 查询性能优化(1)
  7. UI-12组结对编程作业总结
  8. pe如何自动加载外置工具_winpe无法加载外置程序解决方法
  9. tomcat热部署(springboot项目)
  10. 简单书籍类网页代码制作
  11. Vijos 1048 送给圣诞夜的贺卡(dfs)
  12. 排列组合Cnm的求法
  13. 2023 新版二开彩虹易支付 持续更新
  14. 微信公众平台消息接口使用指南
  15. FinalShell密码找回/FinalShell密码破解
  16. gradle linux配置环境变量配置文件,gradle init.gradle的文件配置 使用
  17. 写作小课堂:如何写好工作邮件?
  18. python_learning_2
  19. 【读书笔记】《你有你的计划世界另有计划》——达·芬奇诅咒
  20. 几种图像处理库的研究

热门文章

  1. 淘宝网上一买卖精彩对话
  2. 针对英特尔xtu超频软件安装失败以及英伟达GeForce Experience安装程序无法继续的解决方法
  3. 欠采样临界采样matlab,信号临界采样、过采样、欠采样实验报告.doc
  4. 咖说丨去中心化借贷的逻辑和商业基础
  5. 四元数与欧拉角之间的换算关系
  6. 基于stm32的无线多点温度采集系统设计
  7. HR人事管理系统软件有哪些?如何选择HR人事管理软件?
  8. 基于Multism的高频小信号谐振放大器仿真研究
  9. 计算机技术的应用现状,计算机技术的应用现状分析及其发展趋势探究
  10. C++ 重制植物大战僵尸(Cocos2dx开源项目)