Hutool简介和常用类

Hutool简介

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

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

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

DateUtil

下面是Hutool库中DateUtil类的常用方法整理在一起:

import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;public class DateUtilExample {public static void main(String[] args) {// 格式化日期时间Date date = new Date();String formatDateTime = DateUtil.formatDateTime(date);// 字符串转日期String dateStr = "2024-02-21";Date parseDate = DateUtil.parse(dateStr);// 计算日期差long betweenDay = DateUtil.between(new Date(), DateUtil.offsetDay(new Date(), 1), DateUnit.DAY);// 日期偏移Date offsetDate = DateUtil.offset(new Date(), DateField.DAY_OF_MONTH, 1);// 日期比较boolean isSameDay = DateUtil.isSameDay(new Date(), new Date());// 日期时间加减Date newDate = DateUtil.offsetDay(new Date(), 1);// 日期时间格式化String formattedDate = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");// 获取当前时间Date now = DateUtil.date();// 日期范围判断boolean isInThisWeek = DateUtil.isInThisWeek(new Date());}
}

上述代码展示了Hutool库中DateUtil类的常用方法并整理在一起。您可以根据需要选择合适的方法进行使用。确保你的项目中引入了正确的Hutool依赖,并验证这些方法在你的项目环境中可用。

StrUtil

以下是Hutool库中StrUtil类的常用方法整理在一起:

import cn.hutool.core.util.StrUtil;public class StrUtilExample {public static void main(String[] args) {// 判断字符串是否为空boolean isEmpty = StrUtil.isEmpty("hello");// 判断字符串是否为空白(包括空格、制表符、换行符等)boolean isBlank = StrUtil.isBlank("  ");// 判断字符串是否不为空boolean isNotEmpty = StrUtil.isNotEmpty("world");// 判断字符串是否不为空白boolean isNotBlank = StrUtil.isNotBlank("Hello, world!");// 去除字符串两端的空白字符String trimmedStr = StrUtil.trim("  Hutool  ");// 字符串拼接String concatStr = StrUtil.join(",", "a", "b", "c");// 字符串格式化String formattedStr = StrUtil.format("Hello, {}!", "world");// 字符串分割List<String> splitList = StrUtil.split("a,b,c", ",");// 字符串替换String replacedStr = StrUtil.replace("Hello, world!", "world", "Hutool");// 字符串转换为大写String upperCaseStr = StrUtil.upperFirst("hutool");// 字符串转换为小写String lowerCaseStr = StrUtil.lowerFirst("HUTOOL");// 截取字符串String subStr = StrUtil.sub("Hutool is a useful tool", 6, 13);}
}

BeanUtil

以下是Hutool库中BeanUtil类的常用方法整理在一起: 

import cn.hutool.core.bean.BeanUtil;public class BeanUtilExample {public static void main(String[] args) {// 复制属性值到新对象MyBean sourceBean = new MyBean("John", 30);MyBean targetBean = new MyBean();BeanUtil.copyProperties(sourceBean, targetBean);// 将Map转换为Bean对象Map<String, Object> map = new HashMap<>();map.put("name", "Alice");map.put("age", 25);MyBean beanFromMap = BeanUtil.mapToBean(map, MyBean.class, false);// 将Bean对象转换为MapMap<String, Object> beanMap = BeanUtil.beanToMap(targetBean);// 判断Bean对象是否为空对象boolean isBeanEmpty = BeanUtil.isEmpty(targetBean);// 获取Bean对象的指定属性值Object nameValue = BeanUtil.getProperty(targetBean, "name");// 设置Bean对象的指定属性值BeanUtil.setProperty(targetBean, "age", 35);}static class MyBean {private String name;private int age;// Constructor, getters, and setters}
}

CollUtil 

 以下是Hutool库中CollUtil类的常用方法整理在一起:

import cn.hutool.core.collection.CollUtil;public class CollUtilExample {public static void main(String[] args) {// 创建ArrayList集合List<String> list = CollUtil.newArrayList("apple", "banana", "cherry");// 判断集合是否为空boolean isEmpty = CollUtil.isEmpty(list);// 判断集合是否不为空boolean isNotEmpty = CollUtil.isNotEmpty(list);// 集合元素拼接成字符串String joinStr = CollUtil.join(list, ",");// 将集合转换为数组String[] array = CollUtil.toArray(list, String.class);// 判断集合中是否包含指定元素boolean contains = CollUtil.contains(list, "banana");// 获取集合的指定下标元素String element = CollUtil.get(list, 1);// 反转集合顺序List<String> reversedList = CollUtil.reverse(list);// 清空集合CollUtil.clear(list);}
}

FileUtil 

在 Hutool 中,FileUtil 类提供了一系列用于文件操作的工具方法。以下是 FileUtil 的常见用法示例:

文件读写操作

import cn.hutool.core.io.FileUtil;public class FileUtilExample {public static void main(String[] args) {// 读取文件内容为字符串String content = FileUtil.readUtf8String("test.txt");// 将字符串写入文件FileUtil.writeUtf8String("Hello, World!", "output.txt");// 复制文件FileUtil.copy("source.txt", "destination.txt", true);// 移动文件FileUtil.move("source.txt", "destination.txt", true);// 删除文件FileUtil.del("fileToDelete.txt");// 创建目录FileUtil.mkdir("newDirectory");// 获取文件扩展名String extName = FileUtil.extName("example.doc");// 获取文件大小long fileSize = FileUtil.size("largeFile.pdf");}
}

遍历文件和目录

import cn.hutool.core.io.FileUtil;
import java.io.File;
import java.util.List;public class FileTraverseExample {public static void main(String[] args) {// 遍历指定目录下的所有文件,包括子目录List<File> fileList = FileUtil.loopFiles("directoryPath");// 遍历指定目录下的所有子目录List<File> dirList = FileUtil.loopFiles("directoryPath", file -> file.isDirectory());}
}

以上示例展示了如何使用 Hutool 中的 FileUtil 类进行文件操作,包括读取文件内容、写入文件、复制、移动、删除文件,创建目录,获取文件扩展名和大小,以及遍历文件和目录。确保你的项目中引入了正确的 Hutool 依赖,并验证这些方法在你的项目环境中可用。

IOUtil

在 Hutool 中,IOUtil 类提供了一些实用的方法来处理输入输出流。以下是 IOUtil 的一些常见用法示例:

输入流操作

import cn.hutool.core.io.IoUtil;public class IoUtilExample {public static void main(String[] args) {// 从输入流中读取字节数组byte[] bytes = IoUtil.readBytes(inputStream);// 从输入流中读取字符串String content = IoUtil.readUtf8(inputStream);// 将输入流内容复制到输出流long copySize = IoUtil.copy(inputStream, outputStream, bufferSize);// 关闭输入流IoUtil.close(inputStream);}
}

输出流操作

import cn.hutool.core.io.IoUtil;public class IoUtilExample {public static void main(String[] args) {// 从输入流中读取字节数组byte[] bytes = IoUtil.readBytes(inputStream);// 从输入流中读取字符串String content = IoUtil.readUtf8(inputStream);// 将输入流内容复制到输出流long copySize = IoUtil.copy(inputStream, outputStream, bufferSize);// 关闭输入流IoUtil.close(inputStream);}
}

文件流操作

import cn.hutool.core.io.IoUtil;public class IoUtilExample {public static void main(String[] args) {// 从文件中读取字节数组byte[] fileBytes = IoUtil.readBytes(file);// 从文件中读取字符串String fileContent = IoUtil.readUtf8(file);// 将字节数组写入文件IoUtil.write(fileBytes, file);// 将字符串写入文件IoUtil.writeUtf8("Hello, World!", file);}
}

以上示例展示了如何使用 Hutool 中的 IOUtil 类来处理输入输出流。确保你的项目中引入了正确的 Hutool 依赖,并验证这些方法在你的项目环境中可用。

ObjectUtil

在 Hutool 中,ObjectUtil 类提供了一些实用的方法来操作对象。以下是 ObjectUtil 的一些常见用法示例:

对象判空和相等性检查

import cn.hutool.core.util.ObjectUtil;public class ObjectUtilExample {public static void main(String[] args) {Object obj1 = null;Object obj2 = new Object();// 判断对象是否为空boolean isNull = ObjectUtil.isNull(obj1);// 判断对象是否非空boolean isNotNull = ObjectUtil.isNotNull(obj2);// 比较两个对象是否相等(支持处理null情况)boolean isEqual = ObjectUtil.equal(obj1, obj2);}
}

克隆对象

import cn.hutool.core.util.ObjectUtil;public class ObjectCloneExample {public static void main(String[] args) {SomeClass originalObj = new SomeClass();// 浅克隆对象SomeClass clonedObj = ObjectUtil.clone(originalObj);// 深克隆对象(需要对象实现 Serializable 接口)SomeClass deepClonedObj = ObjectUtil.deepClone(originalObj);}
}

Convert 

在 Hutool 中,Convert 类提供了一系列用于类型转换的方法。以下是 Convert 类的一些常见用法示例:

类型转换

import cn.hutool.core.convert.Convert;public class ConvertExample {public static void main(String[] args) {// 将字符串转换为整数int intValue = Convert.toInt("123");// 将字符串数组转换为整数数组int[] intArray = Convert.toIntArray(new String[]{"1", "2", "3"});// 将对象转换为字符串String strValue = Convert.toStr(123);// 将对象转换为日期Date dateValue = Convert.toDate("2024-02-21");// 将对象转换为指定类型double doubleValue = Convert.convert(double.class, "3.14");// 将集合转换为数组List<String> list = CollUtil.newArrayList("apple", "banana", "cherry");String[] array = Convert.convert(String[].class, list);}
}

转换为指定类型

import cn.hutool.core.convert.Convert;public class ConvertToTypeExample {public static void main(String[] args) {// 将字符串转换为枚举类型Status status = Convert.toEnum(Status.class, "ACTIVE");// 将对象转换为指定实体类User user = Convert.convert(User.class, dataMap);}
}

以上示例展示了如何使用 Hutool 中的 Convert 类进行类型转换操作。确保你的项目中引入了正确的 Hutool 依赖,并验证这些方法在你的项目环境中可用。

NumberUtil

在 Hutool 中,NumberUtil 类提供了一些实用的方法来处理数字类型。以下是 NumberUtil 的一些常见用法示例:

数字格式化

import cn.hutool.core.util.NumberUtil;public class NumberUtilExample {public static void main(String[] args) {// 格式化保留小数位数double num = 123.456789;String formattedNumber = NumberUtil.decimalFormat("#.##", num);// 四舍五入保留指定小数位double roundedNumber = NumberUtil.round(num, 2);// 获取两数相加的和int sum = NumberUtil.add(10, 20);// 获取两数相减的差int difference = NumberUtil.sub(30, 10);// 获取两数相乘的积int product = NumberUtil.mul(5, 6);// 获取两数相除的商double quotient = NumberUtil.div(10, 3);}
}

其他数值操作

import cn.hutool.core.util.NumberUtil;public class NumberUtilOperationsExample {public static void main(String[] args) {// 判断一个数是否为整数boolean isInteger = NumberUtil.isInteger("123");// 判断一个数是否为质数boolean isPrime = NumberUtil.isPrimes(7);// 获取最大公约数long gcd = NumberUtil.gcd(24, 36);// 获取最小公倍数long lcm = NumberUtil.lcm(4, 6);}
}

ZipUtil

在 Hutool 中,ZipUtil 类提供了用于压缩和解压缩文件或目录的方法。以下是 ZipUtil 的一些常见用法示例:

压缩文件或目录

import cn.hutool.core.util.ZipUtil;public class ZipUtilExample {public static void main(String[] args) {// 压缩单个文件ZipUtil.zip("sourceFile.txt", "compressedFile.zip");// 压缩目录及其子目录ZipUtil.zip("sourceDirectory", "compressedDirectory.zip");}
}

解压缩文件

import cn.hutool.core.util.ZipUtil;public class UnzipUtilExample {public static void main(String[] args) {// 解压缩文件到指定目录ZipUtil.unzip("compressedFile.zip", "unzippedDirectory");}
}

压缩和解压缩操作示例

import cn.hutool.core.util.ZipUtil;
import java.io.File;public class ZipAndUnzipExample {public static void main(String[] args) {// 压缩目录ZipUtil.zip(new File("sourceDirectory"), new File("compressedDirectory.zip"));// 解压缩文件ZipUtil.unzip(new File("compressedDirectory.zip"), new File("unzippedDirectory"));}
}

以上示例展示了如何使用 Hutool 中的 ZipUtil 类来进行文件或目录的压缩和解压缩操作。确保你的项目中引入了正确的 Hutool 依赖,并验证这些方法在你的项目环墯中可用。

官网地址

简介 | Hutool

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙 HarmonyOS 4.0】数据持久化

一、数据持久化介绍 数据持久化是将内存数据(内存是临时的存储空间)&#xff0c;通过文件或数据库的形式保存在设备中。 HarmonyOS提供两种数据持久化方案&#xff1a; 1.1、用户首选项&#xff08;Preferences&#xff09;&#xff1a; 通常用于保存应用的配置信息。数据通…

android 全局异常处理封装

app出现了问题&#xff0c;尤其是多线程问题&#xff0c;某个线程出了问题&#xff0c;很不好找&#xff0c;那是不是可以搞一个统一的处理类&#xff0c;将所有的异常信息都统一到一个地方呢&#xff0c;原本只是一个知识点&#xff0c;但我发现这里还可以 保存异常信息到本地…

Vue 进阶系列丨实现简易reactive和ref

Vue 进阶系列教程将在本号持续发布&#xff0c;一起查漏补缺学个痛快&#xff01;若您有遇到其它相关问题&#xff0c;非常欢迎在评论中留言讨论&#xff0c;达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧&#xff01; 2013年7月28日&#xff0c;尤雨溪第一次在 GItHu…

计算机网络Day02--物理层(一)

计算机网络Day02–物理层 物理层基本概念 物理层考虑的是怎么才能在连接各种计算机的传输媒体上传输比特流&#xff0c;而不是具体的传输媒体 作用&#xff1a;尽可能屏蔽掉不同传输媒体和通信手段的差异 用于物流层的协议也称为物流层规程 主要作用&#xff1a;解决计算机…

COCI2015-2016#1 RELATIVNOST

P6533 [COCI2015-2016#1] RELATIVNOST 题目大意 小 L L L在卖画。这些画分为彩色画和黑白画&#xff0c;小 L L L希望有至少 c c c个人会买走他至少一张彩色画。 第 i i i个人至多会购买 a i a_i ai​张彩色画或者 b i b_i bi​张黑白画&#xff0c;且每个人至少购买一张画。…

Android---Jetpack Compose学习007

Compose 附带效应 a. 纯函数 纯函数指的是函数与外界交换数据只能通过函数参数和函数返回值来进行&#xff0c;纯函数的运行不会对外界环境产生任何的影响。比如下面这个函数&#xff1a; fun Add(a : Int, b : Int) : Int {return a b } “副作用”&#xff08;side effe…

单例模式的介绍

单例模式&#xff08;Singleton&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点。其核心思想是通过限制类的实例化次数&#xff0c;防止多个实例同时存在&#xff0c;从而避免了多线程竞争和资源浪费&#xff0c;提高了代码…

【蓝桥杯单片机入门记录】静态数码管

目录 一、数码管概述 &#xff08;1&#xff09;认识数码管 &#xff08;2&#xff09;数码管的工作原理 &#xff08;3&#xff09;LED数码管驱动方式-静态显示 二、数码管电路图 三、静态数码管显示例程 &#xff08;1&#xff09;例程1&#xff1a;数码管显示某一位&a…

vue、thinkphp实现腾讯云对象存储COS图片上传

环境&#xff1a; thinkphp6 vue2 vant2.12 composer安装qcloud-sts-sdk composer require qcloud_sts/qcloud-sts-sdk获取COS临时id、key的sts接口 <?php declare (strict_types 1);namespace app\index\controller; use QCloud\COSSTS\Sts;class CosController {//h…

如何为PostgreSQL设置自增主键?

在 PostgreSQL 中&#xff0c;自增主键通常是通过使用 SERIAL 类型或在新版本中使用 IDENTITY 列来实现的。 1. 使用 SERIAL 类型 SERIAL 是一个自动增加的整数&#xff0c;常用于主键。当插入新的行时&#xff0c;PostgreSQL 会自动为这个列生成一个新的值。   例如 CREAT…

PYQT5-自定义事件

from PyQt5.QtCore import QEvent, QObject from PyQt5.QtWidgets import QApplication import sys# 自定义事件类 class CustomEvent(QEvent):# PYQT5 预留给用户自定义事件类型的起点为 QEvent.User1000custom_event_type QEvent.registerEventType()# 也可以这样写# custom…

2024.2.22

P1162 #include<map> #include<vector> #include<iostream> #include<math.h> #include<algorithm> #include<string> using namespace std; const int N 1020; int n; int g[N][N];//标记数组 int a[N][N];//储存数组 int dx[] { -1…

webstorm光标变成方块解决办法_webstorm光标变粗不能换行

webstorms光标变了 键盘上的insert是切换的快捷键&#xff0c;敲insert就可以来回切换了

回顾 | Java面向对象 多态篇

多态是面向对象编程中的一个重要概念&#xff0c;它允许不同的对象对同一消息做出不同的响应。 通过多态&#xff0c;可以通过父类或接口定义的引用变量来操作子类或实现类的对象&#xff0c;从而实现同一方法在不同对象上的不同行为。 在Java中&#xff0c;多态性主要通过继…

双通道并行网络,想用哪个网络用哪个,MATLAB代码

本期可谓是宝藏篇&#xff01;学会本期的思想&#xff0c;帮助你分分钟找到创新点&#xff0c;且不与别人重复&#xff01; 本期采用MATLAB代码&#xff0c;实现一种“基于格拉姆角场与并行CNN的故障诊断方法”。该方法的具体实现可以参考文献&#xff1a; [1]李宗源,陈谦,钱…

React native更改包名后,启动app的activity包名不生效问题

这篇文章本不算记录的&#xff0c;因为实际开发中&#xff0c;类似这种小问题会有很多很多&#xff0c;因为导致问题的原因千奇百怪&#xff0c;解决方案也不尽相同&#xff0c;所以也都没有记录。 但今天看到我10年写的问题解决小文章&#xff0c;被网友收藏了&#xff0c; 感…

普中51单片机学习(EEPROM)

EEPROM IIC串行总线的组成及工作原理 I2C总线的数据传送 数据位的有效性规定 I2C总线进行数据传送时&#xff0c;时钟信号为高电平期间&#xff0c;数据线上的数据必须保持稳定&#xff0c;只有在时钟线上的信号为低电平期间&#xff0c;数据线上的高电平或低电平状态才允许…

分享WebGL物体三维建模

界面效果 代码结构 模型素材类似CT (Computed Tomography)&#xff0c;即电子计算机断层扫描&#xff0c;它是利用精确准直的X线束、γ射线、超声波等&#xff0c;与灵敏度极高的探测器一同围绕物体的某一部位作一个接一个的断面扫描。 坐标系统 渲染流程 渲染流程是个将之前准…

Sora:OpenAI引领AI视频新时代

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。让我们将一起探讨…

C++(12) 模板类、模板继承(严格模式和自由模式)

文章目录 模版类1. 模版类2. 模版参数限制3. 模版继承3.1 严格模式3.2 自由模式 4. 模版类的模版函数5. 返回值类型带有模版 模版类 1. 模版类 #include <iostream>using namespace std;/* 当前 Person 类型&#xff0c;声明了连个模版分别对应NameType 模版类型&#…