在Java开发中,我们经常需要编写大量的代码来完成基本任务,例如字符串处理、日期计算、文件操作等等。为了简化这些琐碎的编码工作,现在有很多工具库涌现出来,其中Hutool是一个备受欢迎的Java工具库,提供了一系列简单易用的工具,包括但不限于缓存
、数据库操作
、日期时间工具
、文件操作
、加解密工具
、HTTP工具
、JSON工具
、反射工具
、XML工具
等,非常全面。可以大大减少我们的开发时间和成本。
本文将介绍如何使用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, 又摘桃花换酒钱"));
去除空格和回车
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", "又摘桃花换酒钱");
Assert.isTrue(result.equals("hello,又摘桃花换酒钱"));
正则表达式 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 = "又摘桃花换酒钱";
String md5Hex = SecureUtil.md5(str);
System.out.println(md5Hex);
SHA加密
String str = "又摘桃花换酒钱";
String sha256Hex = SecureUtil.sha256(str);
System.out.println(sha256Hex);
DES加解密
String str = "又摘桃花换酒钱";
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 = "又摘桃花换酒钱";
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 = 又摘桃花换酒钱";
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,那么推荐您在项目中使用它,相信您会爱上它的便利和效率。