求你别在瞎写工具类了,Hutool几乎包含了所有你想要的...

  |   0 评论   |   0 浏览

大家好,我是一航!

在Java开发中,我们经常需要编写大量的代码来完成基本任务,例如字符串处理、日期计算、文件操作等等。为了简化这些琐碎的编码工作,现在有很多工具库涌现出来,其中Hutool是一个备受欢迎的Java工具库,提供了一系列简单易用的工具,包括但不限于 缓存数据库操作日期时间工具文件操作加解密工具HTTP工具JSON工具反射工具XML工具等,非常全面。可以大大减少我们的开发时间和成本。

image-20230423203923592

本文将介绍如何使用Hutool工具库来简化Java开发,包括常用的工具和示例。希望能够帮助朋友们更加高效地完成Java开发任务。

依赖

Maven

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

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

Gradle

implementation 'cn.hutool:hutool-all:5.8.16'

字符串工具

Hutool的字符串 StrUtil 工具类有很多常用的静态方法,可以方便地进行字符串操作:

判断字符串是否为空

String str = null;
Assert.isTrue(StrUtil.isEmpty(str)); // true
Assert.isTrue(StrUtil.isNotEmpty(str)); // false

字符串格式化

String name = "一行Java";
String message = StrUtil.format("hello, {}", name);
Assert.isTrue(message.equals("hello, 一行Java"));

去除空格和回车

String str = "  hello \n world  \n";
String result = StrUtil.cleanBlank(str);
Assert.isTrue(result.equals("helloworld"));

// 去除字符串两端空格
String trimStr = StrUtil.trim(str);

字符串替换

String str = "hello, hutool";
String result = StrUtil.replace(str, "hutool", "一行Java");
Assert.isTrue(result.equals("hello, 一行Java"));

正则表达式 ReUtil

// 提取字符串中的数字
String result = ReUtil.get("\\d+", "Hello 123 World"); // result = "123"

// 判断字符串是否匹配正则表达式
boolean isMatch = ReUtil.isMatch("ab.*cd", "abxxxxxcd");

// 替换字符串中的匹配项
String replace = ReUtil.replaceAll("a(.)", "$1#", "abc"); // replace = "b#c"

集合工具

Hutool的集合 ListUtil 工具类提供了非常丰富的方法,可以方便地进行集合操作:

初始化列表

List<String> list = ListUtil.of("a", "b", "c");
System.out.println(list);

集合排序

List<String> list = ListUtil.of("b", "a", "c");
List<String> sortedList = ListUtil.sort(list);
System.out.println(sortedList);

集合去重

List<String> list = ListUtil.of("a", "b", "a", "c");
List<String> uniqueList = ListUtil.distinct(list);
System.out.println(uniqueList);

集合分组

List<String> list = ListUtil.of("apple", "banana", "orange", "pear", "peach");
Map<Integer, List<String>> groupMap = ListUtil.groupBy(list, s -> s.length());
System.out.println(groupMap);

文件工具

Hutool的 FileUtil 文件工具类提供了方便的文件操作方法,以下是一些常用的示例:

创建文件和目录

File file = FileUtil.touch("example.txt");
FileUtil.mkdir("exampleDir");

删除文件和目录

FileUtil.del("example.txt");
FileUtil.del("exampleDir");

复制文件和目录

FileUtil.copy("source.txt", "target.txt", true); // true表示覆盖
FileUtil.copyDir("sourceDir", "targetDir", true);

JSON工具

Hutool的 JSONUtil 工具类提供了方便的JSON解析和生成方法:

解析JSON字符串

String jsonStr = "{\"name\":\"hutool\",\"age\":18}";
JSONObject json = JSONUtil.parseObj(jsonStr);
String name = json.getStr("name"); // hutool
int age = json.getInt("age"); // 18

生成JSON字符串

JSONObject json = JSONUtil.createObj()
    .set("name", "hutool")
    .set("age", 18);
String jsonStr = json.toString();
System.out.println(jsonStr); // {"name":"hutool","age":18}

从JSON字符串中提取节点

String jsonStr = "{\"name\":\"hutool\",\"age\":18}";
String name = JSONUtil.parseObj(jsonStr).getByPath("name").toString();
int age = JSONUtil.parseObj(jsonStr).getByPath("age").toInt();

HTTP工具

Hutool的 HttpUtil 工具类提供了方便的HTTP请求和响应方法,几行代码就能完成网络请求,文件下载:

发送HTTP GET请求

HttpResponse response = HttpUtil.createGet("https://www.baidu.com/").execute();
String body = response.body();
System.out.println(body);

发送HTTP POST请求

Map<String, Object> params = new HashMap<>();
params.put("name", "hutool");
params.put("age", 18);
HttpResponse response = HttpUtil.createPost("https://example.com/").form(params).execute();
String body = response.body();
System.out.println(body);

下载网络文件

HttpUtil.downloadFile("https://example.com/image.png", FileUtil.file("image.png"));

日期工具

Hutool 处理日期的 DateUtil 工具类能非常方便的帮我们做日期、时间的格式化:

格式化日期为字符串

Date date = new Date();
String dateString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(dateString);

解析字符串为日期

String dateString = "2023-04-23";
Date date = DateUtil.parse(dateString);
System.out.println(date);

获取两个日期之间的天数

String date1 = "2021-01-01";
String date2 = "2023-04-23";
long betweenDays = DateUtil.between(DateUtil.parse(date1), DateUtil.parse(date2), DateUnit.DAY);
System.out.println(betweenDays);

加解密工具

Hutool的加解密 SecureUtil 工具类提供了常用的加密和解密算法,以下是一些常用的示例:

MD5加密

String str = "一行Java";
String md5Hex = SecureUtil.md5(str);
System.out.println(md5Hex);

SHA加密

String str = "一行Java";
String sha256Hex = SecureUtil.sha256(str);
System.out.println(sha256Hex);

DES加解密

String str = "一行Java";
SymmetricCrypto des = SecureUtil.des();
String encryptHex = des.encryptHex(str);
System.out.println(encryptHex);
String decryptStr = des.decryptStr(encryptHex);
System.out.println(decryptStr);

AES加解密

String str = "一行Java";
SymmetricCrypto aes = SecureUtil.aes();
String encryptHex = aes.encryptHex(str);
System.out.println(encryptHex);
String decryptStr = aes.decryptStr(encryptHex);
System.out.println(decryptStr);

RSA加解密

String str = "一行Java";
KeyPair pair = SecureUtil.generateKeyPair("RSA");
RSA rsa = SecureUtil.rsa(pair.getPrivate(), pair.getPublic());
String encryptBase64 = rsa.encryptBase64(str, KeyType.PublicKey);
System.out.println(encryptBase64);
String decryptStr = rsa.decryptStr(encryptBase64, KeyType.PrivateKey);
System.out.println(decryptStr);

以上也只是一些比较常见的工具示例,Hutool还支持非常丰富的工具类,详情可见官方文档:https://hutool.cn/docs

使用Hutool可以让我们在开发中更有效的节省时间,减少重复或繁琐的工作。同时,Hutool官方文档写的也非常的详细,还享有广泛的社区支持,因此遇到问题只需简单搜索即可获得解决方案。如果您还没有尝试使用Hutool,那么推荐您在项目中使用它,相信您会爱上它的便利和效率。