前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在重复造轮子?试试这个java工具类

还在重复造轮子?试试这个java工具类

作者头像
永恒君
发布2022-12-06 15:44:28
8640
发布2022-12-06 15:44:28
举报
文章被收录于专栏:开源小分队开源小分队

大家好,我是可爱又机灵的开源小妹。

上周接到老大的需求说让小妹整理下工具类,新项目要用,本想直接拿以前的改改直接用的,结果发现以前的工具类存在很多问题,光加解密工具类就重复写了很多个。

赶紧跑去找开源大叔商量对策,最终在 Github 上找到 Hutool 这款神器,终于解救了可怜的小妹。

简介

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

Hutool 中的工具方法来自每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

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

Hutool如何改变我们的coding方式

Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。

以计算MD5为例:

【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用

【现在】引入Hutool -> SecureUtil.md5()

Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。

包含组件

Hutool 是一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块

使用方法

Maven

在项目的pom.xml的dependencies中加入以下内容:

代码语言:javascript
复制
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.16</version>
</dependency>

Gradle

代码语言:javascript
复制
implementation 'cn.hutool:hutool-all:5.7.16'

直接下载jar包

直接去Maven中央仓库下载即可

常用的轮子

类型转换工具类 Convert

Convert 类是一个类型转换工具方法类,里面封装了针对 Java 常见类型的转换,用于简化类型转换。

代码语言:javascript
复制
// 转换为字符串
int num = 0;
// str为"0"
String str = Convert.toStr(num);

// 转换为指定类型数组
String[] b = {"0", "1", "2", "3"};
Integer[] arr = Convert.toIntArray(b);

// 转换为日期对象
String dateStr = "2016-01-01";
Date date = Convert.toDate(dateStr);

// 转换为列表
String[] strArr= {"a", "b", "c", "d"};
List<String> strList = Convert.toList(String.class, strArr);

字符串工具 StrUtil

代码语言:javascript
复制
// 判断是否为空字符串
StrUtil.isEmpty(str);
StrUtil.isNotEmpty(str);

// 去除字符串的前后缀
StrUtil.removeSuffix("a.jpg", ".jpg");
StrUtil.removePrefix("a.jpg", "a.");

日期时间工具 DateUtil

主要提供日期和字符串之间的转换,以及提供对日期的定位。

代码语言:javascript
复制
// 当前时间
Date date = DateUtil.date();

// Calendar 转 Date
Date date = DateUtil.date(Calendar.getInstance());

// 时间戳转Date
Date date = DateUtil.date(System.currentTimeMillis());

// 自动识别格式转换
String dateStr = "2016-01-01";
Date date = DateUtil.parse(dateStr);

// 自定义格式化转换
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

// 格式化输出日期
String format = DateUtil.format(date, "yyyy-MM-dd");

// 获取某天的开始、结束时间
Date beginOfDay = DateUtil.beginOfDay(date);
Date endOfDay = DateUtil.endOfDay(date);

// 计算偏移后的日期时间
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 1);

信息脱敏工具 DesensitizedUtil

在数据处理或清洗中,可能涉及到很多隐私信息的脱敏工作,因此Hutool针对常用的信息封装了一些脱敏方法。现阶段支持的脱敏数据类型包括:用户 id、中文姓名、身份证号、座机号、手机号、地址、电子邮件、密码、中国大陆车牌,包含普通车辆、新能源车辆、银行卡等。

代码语言:javascript
复制
// 身份证脱敏 4***************1X
DesensitizedUtil.idCardNum("41353620000320711X", 1, 2);

// 手机号脱敏 191****1999
DesensitizedUtil.mobilePhone("19149531999");

// 密码脱敏 **********
DesensitizedUtil.password("1234567890");

// 邮箱脱敏 7********@qq.com
DesensitizedUtil.email("788888888@qq.com");

图片工具 ImgUtil

针对 awt 中图片处理进行封装,这些封装包括:缩放、裁剪、转为黑白、加水印等操作。

代码语言:javascript
复制
// 缩放图片
ImgUtil.scale(
   FileUtil.file("e:/test.jpg"),
   FileUtil.file("e:/test_result.jpg"),
   // 缩放比例
   0.5f 
);

// 裁剪图片
ImgUtil.cut(
   FileUtil.file("e:/test.jpg"),
   FileUtil.file("e:/test_result.jpg"),
   // 裁剪的矩形区域
   newRectangle(200, 200, 100, 100) 
);

// `slice` 按照行列剪裁切片(将图片分为20行和20列)
ImgUtil.slice(FileUtil.file("e:/test2.png"), FileUtil.file("e:/dest/"), 10, 10);

// 转换图片格式
ImgUtil.convert(FileUtil.file("e:/test.png"), FileUtil.file("e:/testConvert.jpg"));

// 转黑白
ImgUtil.gray(FileUtil.file("e:/test.png"), FileUtil.file("e:/result.png"));

Excel工具 ExcelUtil

代码语言:javascript
复制
// 读取 excel 文件
ExcelReader reader = ExcelUtil.getReader("e:/test.xlsx");
List<List<Object>> readAll = reader.read();
List<Map<String,Object>> readAll = reader.readAll();
List<Person> all = reader.readAll(Person.class);

// 写出到客户端
// 通过工具类创建writer,默认创建xls格式
ExcelWriterwriter = ExcelUtil.getWriter();
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
// out为OutputStream,需要写出到的目标流
// response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStreamout=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
// 此处记得关闭输出Servlet流
IoUtil.close(out);

图形验证码 CaptchaUtil

代码语言:javascript
复制
// 定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 150);
// 图形验证码写出,可以写出到文件,也可以写出到流
lineCaptcha.write("e:/line.png");
// 输出code
Console.log(lineCaptcha.getCode());
// 验证图形验证码的有效性,返回boolean值
lineCaptcha.verify("1234");
// 重新生成验证码
lineCaptcha.createCode();
lineCaptcha.write("e:/line.png");
// 新的验证码
Console.log(lineCaptcha.getCode());
// 验证图形验证码的有效性,返回boolean值
lineCaptcha.verify("1234");

小妹总结

大家觉得小妹找到的这个工具怎么样,是不是很强大,很全面?

问君能有几多愁,开源项目解千愁,今天小妹的分享就到这里啦!我们下期再见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • Hutool如何改变我们的coding方式
    • 包含组件
    • 使用方法
      • Maven
        • Gradle
          • 直接下载jar包
          • 常用的轮子
            • 类型转换工具类 Convert
              • 字符串工具 StrUtil
                • 日期时间工具 DateUtil
                  • 信息脱敏工具 DesensitizedUtil
                    • 图片工具 ImgUtil
                      • Excel工具 ExcelUtil
                        • 图形验证码 CaptchaUtil
                        • 小妹总结
                        相关产品与服务
                        验证码
                        腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档