首页 > 其他分享 >Hutool工具类常用工具

Hutool工具类常用工具

时间:2023-04-18 11:37:28浏览次数:44  
标签:DateUtil String Hutool NumberUtil date 工具 常用工具

介绍

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

Hutool如何改变我们的coding方式?

以计算MD5为例:
【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用
【现在】引入Hutool -> SecureUtil.md5()

组件

Maven 

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

注意 Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类或工具方法可用。 如果你的项目使用JDK7,请使用Hutool 4.x版本(不再更新)

常用工具间类

1.生成图形验证码输出流——CaptchaUtil

@RestController
public class CaptchaController {
    @GetMapping("/getCaptcha")
    @ApiOperation(value = "获取验证码")
    public void getCaptcha(HttpServletResponse response) {
        //生成验证码图片
        LineCaptcha circleCaptcha = CaptchaUtil.createLineCaptcha(200/*宽*/, 100/*高*/, 4/*验证码显示几个*/, 50/*有几个线段*/);
        //告诉浏览器输出内容为jpeg类型的图片
        response.setContentType("image/jpeg");
        //禁止浏览器缓存
        response.setHeader("Pragma", "No-cache");
        try {
            ServletOutputStream outputStream = response.getOutputStream();
            circleCaptcha.write(outputStream);
            String code = circleCaptcha.getCode();
            Console.log(code);
            //关闭流
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 2.信息脱敏——DesensitizedUtil

//身份证
String idCard = DesensitizedUtil.idCardNum("4136200003265871X", 1, 2);
System.out.println("加密后身份证:"+idCard);
//手机号码
String mobile = DesensitizedUtil.mobilePhone("18569195966");
System.out.println("加密后手机号码:"+mobile);
//密码
String passWord = DesensitizedUtil.password("123456789");
System.out.println("加密后密码:"+passWord);

 hutool目前支持脱敏系列有

用户id
中文姓名
身份证号
座机号
手机号
地址
电子邮件
密码
中国大陆车牌,包含普通车辆、新能源车辆
银行卡

3.MD5加密——SecureUtil

String s = SecureUtil.md5("123456");
System.out.println("加密后:"+s);

 4.http工具类发送http请求——HttpRequest

public void testHttps() throws Exception {
            JSONObject json = new JSONObject();
            json.put("username", "1332788xxxxxx");
            json.put("password", "123456.");
            String result = HttpRequest.post("https://api2.hutool.cn/1/users")
                    .header("Content-Type", "application/json")
                    .header("X-Bmob-Application-Id","2f0419a31f9casdfdsf431f6cd297fdd3e28fds4af")
                    .header("X-Bmob-REST-API-Key","1e03efdas82178723afdsafsda4be0f305def6708cc6")
                    .body(String.valueOf(json))
                    .execute().body();
            System.out.println(result);
    }

5.日期时间工具类——DateUtil

//Date、long、Calendar之间的相互转换
//当前时间
Date date = DateUtil.date();
//Calendar转Date
date = DateUtil.date(Calendar.getInstance());
//时间戳转Date
date = DateUtil.date(System.currentTimeMillis());
//自动识别格式转换
String dateStr = "2017-03-01";
date = DateUtil.parse(dateStr);
//自定义格式化转换
date = DateUtil.parse(dateStr, "yyyy-MM-dd");
//格式化输出日期
String format = DateUtil.format(date, "yyyy-MM-dd");
//获得年的部分
int year = DateUtil.year(date);
//获得月份,从0开始计数
int month = DateUtil.month(date);
//获取某天的开始、结束时间
Date beginOfDay = DateUtil.beginOfDay(date);
Date endOfDay = DateUtil.endOfDay(date);
//计算偏移后的日期时间
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
//计算日期时间之间的偏移量
long betweenDay = DateUtil.between(date, newDate, DateUnit.DAY);

6.类型转换工具——Convert

//转换为字符串
int a = 1;
String aStr = Convert.toStr(a);
//转换为指定类型数组
String[] b = {"1", "2", "3", "4"};
Integer[] bArr = Convert.toIntArray(b);
//转换为日期对象
String dateStr = "2017-05-06";
Date date = Convert.toDate(dateStr);
//转换为列表
String[] strArr = {"a", "b", "c", "d"};
List<String> strList = Convert.toList(String.class, strArr);

7.字符串工具类——StrUtil

//判断是否为空字符串
String str = "test";
StrUtil.isEmpty(str);
StrUtil.isNotEmpty(str);
//去除字符串的前后缀
StrUtil.removeSuffix("a.jpg", ".jpg");
StrUtil.removePrefix("a.jpg", "a.");
//格式化字符串
String template = "这只是个占位符:{}";
String str2 = StrUtil.format(template, "我是占位符");
LOGGER.info("/strUtil format:{}", str2);

8.数字处理工具类——NumberUtil

double n1 = 1.234;
double n2 = 1.234;
double result;
//对float、double、BigDecimal做加减乘除操作
result = NumberUtil.add(n1, n2);
result = NumberUtil.sub(n1, n2);
result = NumberUtil.mul(n1, n2);
result = NumberUtil.div(n1, n2);
//保留两位小数
BigDecimal roundNum = NumberUtil.round(n1, 2);
String n3 = "1.234";
//判断是否为数字、整数、浮点数
NumberUtil.isNumber(n3);
NumberUtil.isInteger(n3);
NumberUtil.isDouble(n3);

9.JavaBean的工具类 BeanUtil

PmsBrand brand = new PmsBrand();
brand.setId(1L);
brand.setName("小米");
brand.setShowStatus(0);
//Bean转Map
Map<String, Object> map = BeanUtil.beanToMap(brand);
LOGGER.info("beanUtil bean to map:{}", map);
//Map转Bean
PmsBrand mapBrand = BeanUtil.mapToBean(map, PmsBrand.class, false);
LOGGER.info("beanUtil map to bean:{}", mapBrand);
//Bean属性拷贝
PmsBrand copyBrand = new PmsBrand();
BeanUtil.copyProperties(brand, copyBrand);
LOGGER.info("beanUtil copy properties:{}", copyBrand);

10.唯一ID工具-IdUtil

// UUID
//生成的UUID是带-的字符串,类似于:a5c8a5e8-df2b-4706-bea4-08d0939410e3
String uuid = IdUtil.randomUUID();

//生成的是不带-的字符串,类似于:b17f24ff026d40949c85a24f4f375d42
String simpleUUID = IdUtil.simpleUUID();

//ObjectId
//生成类似:5b9e306a4df4f8c54a39fb0c
String id = ObjectId.next();

//方法2:从Hutool-4.1.14开始提供
String id2 = IdUtil.objectId();

//Snowflake
//参数1为终端ID
//参数2为数据中心ID
Snowflake snowflake = IdUtil.getSnowflake(1, 1);
long id = snowflake.nextId();

11.IO工具类-IoUtil

//文件流拷贝
BufferedInputStream in = FileUtil.getInputStream("d:/test.txt");
BufferedOutputStream out = FileUtil.getOutputStream("d:/test2.txt");
long copySize = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE);

12.ClassPath资源访问 ClassPathResource

 

//获取定义在src/main/resources文件夹中的配置文件
ClassPathResource resource = new ClassPathResource("generator.properties");
Properties properties = new Properties();
properties.load(resource.getStream());
LOGGER.info("/classPath:{}", properties);

 

13.随机工具-RandomUtil

 

//例如我们想产生一个[10, 100)的随机数
int c = RandomUtil.randomInt(10, 100);

// 随机bytes,一般用于密码或者salt生成
byte[] c = RandomUtil.randomBytes(10);

//随机获得列表中的一定量的不重复元素,返回Set
Set<Integer> set = RandomUtil.randomEleSet(CollUtil.newArrayList(1, 2, 3, 4, 5, 6), 2);

RandomUtil.randomString 获得一个随机的字符串(只包含数字和字符)
RandomUtil.randomNumbers 获得一个只包含数字的字符串
RandomUtil.weightRandom 权重随机生成器,传入带权重的对象,然后根据权重随机获取对象

 

 

 

 

上边就是比较常用的hutool工具类方法了

 

标签:DateUtil,String,Hutool,NumberUtil,date,工具,常用工具
From: https://www.cnblogs.com/wanbiao/p/17328963.html

相关文章

  • 面对CICD分析的代码静态测试工具Klocwork 2023.1版本更新快讯
    前言  Klocwork2023.1为CI/CD分析pipeline引入灵活的管理选项。使用差异分析加速静态分析扫描,在CI/CD管道构建中提供上下文结果,并可以用和服务器端相同的方式管理issue。 扩展了对Java14/15和C#8.0语言的支持,C/C++/C#PATH分析性能提升高达50%*。此外,此版本还包括对M......
  • 瓴羊quickbi工具的妙用:多场景多业务下的数据整合与分析
    瓴羊QuickBI近日内推出了30天免费试用的活动,对于想要引入大数据分析工具的企业来说可谓是千载难逢的机会。想要免费体验瓴羊bi工具,只需要搜索“瓴羊QuickBI”,进入瓴羊QuickBI官网,就能申请参加这个免费活动,体验瓴羊QuickBI的大数据处理能力了。在数字经济时代,人们常常用数据量、......
  • 从容器镜像构建虚拟机镜像——d2vm工具介绍
    从容器镜像构建虚拟机镜像——d2vm工具介绍简介容器镜像是容器技术的核心组成部分之一,得益于基于UnionFS的多层次容器镜像,开发者在构建镜像时能够做到对已有镜像层的高度复用,而在使用镜像时也能够较大程度上节约磁盘空间和网络带宽,从而为容器技术的广泛流行奠定了基础。虚拟机......
  • 低代码开发重要工具:私有化部署的jvs-logic的设计与价值
    逻辑引擎介绍逻辑引擎是一种能够处理逻辑表达式的程序,它能够根据用户输入的表达式计算出表达式的值。在实际应用中,逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域,具有广泛的应用前景。逻辑引擎如下图所示,在业务系统中存在各种的业务触发的动作,例如提交一个申请、回......
  • kettle工具如何使用service_name连接oracle
    开发反馈使用kettle工具连pdb连不上,报错如下: Causedby:org.pentaho.di.core.exception.KettleDatabaseException:Errorconnectingtodatabase:(usingclassoracle.jdbc.driver.OracleDriver)Listenerrefusedtheconnectionwiththefollowingerror:ORA-12505,TNS:l......
  • 防伪图案制作工具Excentro Mac版 v1.9.26
    Excentroformac是Macos平台上的一款非常不错的Mac平面设计软件,Excentroformac是OSX上的一款防伪图案制作软件,可以创建刻花设计,背景,边框或花环。excentro是一个接近于90年代中期的一个原始Excentro功能的简化版本。软件下载ExcentroMac版v1.9.26功能介绍Excentro是......
  • Java 实现Arrays 数组工具类
    ClassArrays是java工具包自带的非常强大的数组工具类,今天手工实现了一部分功能,部分参考实现如下publicclassMyArrays{//最大值/***获取int数组最大值**@paramarr:代遍历的数组*@return数组最大值*/publicintgetMax(......
  • 实时Oracle 监控和性能分析工具
    概述 MyOra是一种先进的Oracle数据库监控工具,具有最快的响应时间并提供对Oracle数据库的即时可见性。该工具简单、快速且易于使用,无需安装,无需Oracle客户端,也无需互联网连接。下载MyOra并实时监控数据库性能。也可将MyOra用作DBA工具或SQL查询工具。   ......
  • 软件测试工具
    将测试工具分为以下几大类:1.测试管理工具:TestDirector、jira、QualityCenter、bugzilla、git2.接口测试工具:Jmeter、Jmeter3.性能测试工具:loadrunner、jmeter、Webbench4.C/S自动化工具:qtp、autoit 5.白盒测试工具:jtest、JUnit、cppunit6.代码扫描工具:Coverity、cpp......
  • 沉浸式的翻译 – 同时显示原文和译文的双语翻译工具,这让人很难不爱
    使用的理由自从谷歌翻译不再对大陆用户提供服务后。内心是一阵酸痛的,毕竟我认识单词单词不认识我啊,这简直是天书一般的存在。期间网络中的很多大神也是推荐了不少方法让我再次拥抱谷歌翻译,比如教我修改host文件什么的,但这毕竟也不是长久之计,而且使用过一段时间后,也可能会失效的......