Hutool工具類:Java開發必備神器

Hutool工具類使用說明

Hutool是一個Java工具類庫,提供了豐富的功能模塊,包括字符串處理、日期時間操作、IO流、加密解密、HTTP客戶端等。以下是一些常用模塊的具體使用方法。

字符串工具(StrUtil)

字符串處理是開發中的常見需求,StrUtil模塊提供了高效的字符串操作方法。

// 判斷字符串是否為空
boolean isEmpty = StrUtil.isEmpty(""); // true// 格式化字符串
String template = "姓名:{},年齡:{}";
String formatted = StrUtil.format(template, "張三", 25); // 姓名:張三,年齡:25// 截取字符串
String subStr = StrUtil.sub("Hello World", 0, 5); // "Hello"
日期時間工具(DateUtil)

DateUtil模塊簡化了日期時間的操作,支持日期解析、格式化、計算等功能。

// 字符串轉日期
Date date = DateUtil.parse("2023-10-01");// 日期加減
Date newDate = DateUtil.offsetDay(date, 1); // 加1天// 格式化日期
String formattedDate = DateUtil.format(date, "yyyy/MM/dd"); // "2023/10/01"
文件IO工具(FileUtil)

FileUtil模塊封裝了常見的文件操作,如讀寫、復制、刪除等。

// 讀取文件內容
String content = FileUtil.readUtf8String("test.txt");// 寫入文件
FileUtil.writeUtf8String("Hello Hutool", "output.txt");// 復制文件
FileUtil.copy("source.txt", "target.txt", true);

HTTP客戶端工具(HttpUtil)

HttpUtil模塊提供了簡潔的HTTP請求方法,支持GET、POST等請求方式。

// GET請求
String response = HttpUtil.get("https://example.com");// POST請求
Map<String, Object> params = new HashMap<>();
params.put("name", "Hutool");
String postResponse = HttpUtil.post("https://example.com/api", params);

加密解密工具(SecureUtil)

SecureUtil模塊支持多種加密算法,如MD5、SHA-1、AES等。

// MD5加密
String md5 = SecureUtil.md5("123456");// AES加密解密
String data = "Hello Hutool";
String key = "1234567812345678";
String encrypted = SecureUtil.aes(key.getBytes()).encryptHex(data);
String decrypted = SecureUtil.aes(key.getBytes()).decryptStr(encrypted);

集合工具(CollUtil)

CollUtil模塊提供了集合操作的便捷方法,如判空、分組、過濾等。

List<String> list = Arrays.asList("a", "b", "c");// 集合判空
boolean isNotEmpty = CollUtil.isNotEmpty(list); // true// 分組
Map<Character, List<String>> grouped = CollUtil.groupByField(list, str -> str.charAt(0));
反射工具(ReflectUtil)

ReflectUtil模塊簡化了Java反射操作,支持動態調用方法、訪問字段等。

// 調用方法
class TestClass {public void print(String msg) {System.out.println(msg);}
}
ReflectUtil.invoke(new TestClass(), "print", "Hello Reflection");// 訪問字段
class TestField {private String name = "Hutool";
}
String name = (String) ReflectUtil.getFieldValue(new TestField(), "name");
驗證碼工具(CaptchaUtil)

CaptchaUtil模塊可用于生成圖形驗證碼,支持干擾線、扭曲等效果。

// 生成驗證碼
LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);
String code = captcha.getCode(); // 驗證碼文本
captcha.write("captcha.png"); // 保存驗證碼圖片

BeanUtil:JavaBean操作工具

對象屬性拷貝
將源對象的屬性值拷貝到目標對象:

User srcUser = new User("張三", 25);
User targetUser = new User();
BeanUtil.copyProperties(srcUser, targetUser);

Map轉JavaBean
將Map轉換為JavaBean對象:

Map<String, Object> map = new HashMap<>();
map.put("name", "李四");
map.put("age", 30);
User user = BeanUtil.mapToBean(map, User.class, false);

復制插入

JavaBean轉Map
將JavaBean對象轉為Map:

User user = new User("王五", 28);
Map<String, Object> map = BeanUtil.beanToMap(user);


IdUtil:唯一ID生成工具

生成UUID
生成不帶連字符的UUID

String uuid = IdUtil.simpleUUID();

生成Snowflake ID
基于Snowflake算法生成分布式ID(雪花算法)

long snowflakeId = IdUtil.getSnowflake().nextId();

生成ObjectId
MongoDB風格的ObjectId:

String objectId = IdUtil.objectId();

RandomUtil:隨機數生成工具

生成隨機整數
生成指定范圍內的隨機整數:

int randomInt = RandomUtil.randomInt(1, 100);

生成隨機字符串
生成指定長度的隨機字母數字字符串(可用在隨機生成驗證碼)

String randomString = RandomUtil.randomString(10);

生成隨機UUID
生成帶連字符的標準UUID

String randomUUID = RandomUtil.randomUUID();


ZipUtil:壓縮解壓工具

壓縮文件/目錄
將文件或目錄壓縮為ZIP:

File file = new File("/path/to/file.txt");
File zipFile = ZipUtil.zip(file);

解壓ZIP文件
解壓ZIP到指定目錄:

File zipFile = new File("/path/to/archive.zip");
File destDir = new File("/path/to/output");
ZipUtil.unzip(zipFile, destDir);

壓縮到流
將文件壓縮為ZIP并輸出到:

File file = new File("/path/to/file.txt");
OutputStream out = new FileOutputStream("/path/to/output.zip");
ZipUtil.toZip(file, out);


以上方法均基于Hutool工具包的最新版本(建議使用5.8.x+)。具體使用時需確保引入依賴:

xml復制插入

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Node.js中Buffer的用法

// Buffer 與字符串的轉換示例 // Buffer 是 Node.js 中用于處理二進制數據的類&#xff0c;字符串與 Buffer 之間的轉換是常見操作// 1. 從字節數組創建 Buffer 并轉換為字符串 // Buffer.from(array) 接收一個字節數值數組&#xff0c;創建對應的 Buffer let buf_4 Buffer.f…

【Java 基礎】Java 源代碼加密工具有哪些?

??博主介紹: 博主從事應用安全和大數據領域,有8年研發經驗,5年面試官經驗,Java技術專家,WEB架構師,阿里云專家博主,華為云云享專家,51CTO 專家博主 ?? 個人社區:個人社區 ?? 個人主頁:個人主頁 ?? 專欄地址: ? Java 中級 ??八股文專題:劍指大廠,手撕 J…

es的histogram直方圖聚合和terms分組聚合

你提到的這兩個 Elasticsearch aggs 聚合語句&#xff1a;第一種&#xff1a;histogram 直方圖聚合 "aggs": {"DayDiagram": {"histogram": {"field": "${FiledName}","interval": ${TimeInterval},"extende…

基于Java的AI/機器學習庫(Smile、Weka、DeepLearning4J)的實用

基于Java和AI技術處理動漫視頻 以下是一些基于Java和AI技術處理動漫視頻(如《亞久斗》)的實用案例和實現方法,涵蓋視頻分析、風格轉換、角色識別等方向。每個案例均提供技術思路和關鍵代碼片段。 視頻關鍵幀提取 使用OpenCV提取動漫視頻中的關鍵幀,保存為圖片供后續分析…

筆記本電腦聯想T14重啟后無法識別外置紅米屏幕

【原先是可以連接重啟后不行】按照以下步驟排查和解決&#xff1a;? 1. 基礎排查確認連接方式&#xff1a;檢查是否使用 USB-C轉DP/HDMI線 或 HDMI/DP直連&#xff0c;嘗試更換線纜或接口&#xff08;如換另一個USB-C口或HDMI口&#xff09;。測試顯示器&#xff1a;將紅米顯示…

vue+ts 基礎面試題 (一 )

目錄 1.Vue3 響應式原理 一、 響應式的基本概念 二、 核心機制&#xff1a;Proxy 和依賴追蹤 三、 觸發更新的過程 四、 代碼示例 五、 優勢總結 2.如何實現組件間通信&#xff1f; 一、父子組件通信 1. 父傳子&#xff1a;Props 傳遞 2. 子傳父&#xff1a;自定義事…

Spring AI實戰:SpringBoot項目結合Spring AI開發——提示詞(Prompt)技術與工程實戰詳解

&#x1fa81;&#x1f341; 希望本文能給您帶來幫助&#xff0c;如果有任何問題&#xff0c;歡迎批評指正&#xff01;&#x1f405;&#x1f43e;&#x1f341;&#x1f425; 文章目錄一、前言二、提示詞前置知識2.1 提示詞要素2.2 設計提示詞的通用技巧2.2.1 從簡單開始2.2.…

【后端】Java static 關鍵字詳解

在 Java 中&#xff0c;static 是一個修飾符&#xff0c;用于定義與類相關&#xff08;而非對象實例相關&#xff09;的成員。以下是核心知識點和用法&#xff1a;一、四大用途靜態變量&#xff08;類變量&#xff09; 作用&#xff1a;屬于類&#xff0c;而非實例。所有實例共…

算法訓練營DAY50 第十一章:圖論part01

98. 所有可達路徑 98. 所有可達路徑 【題目描述】 給定一個有 n 個節點的有向無環圖&#xff0c;節點編號從 1 到 n。請編寫一個程序&#xff0c;找出并返回所有從節點 1 到節點 n 的路徑。每條路徑應以節點編號的列表形式表示。 【輸入描述】 第一行包含兩個整數 N&#…

OpenCV:從入門到實戰的全方位指南

目錄 一、OpenCV 簡介 &#xff08;一&#xff09;特點 &#xff08;二&#xff09;應用場景 二、OpenCV 的核心模塊 &#xff08;一&#xff09;core 模塊 &#xff08;二&#xff09;imgproc 模塊 &#xff08;三&#xff09;video 模塊 &#xff08;四&#xff09;f…

如何在 Ubuntu 24.04 上安裝和配置 TFTP 服務器

了解如何在 Ubuntu 24.04 Linux 上安裝 TFTP 以執行基本的文件傳輸。 簡單文件傳輸協議(TFTP)是標準 FTP 的輕量級替代方案,用于在聯網設備之間傳輸文件。與 FTP 和 HTTP 相比,TFTP 更簡單,無需復雜的客戶端-服務器模型即可操作。這就是為什么該協議用于執行基本文件傳輸…

基于 AXI-Lite 實現可擴展的硬件函數 RPC 框架(附完整源碼)

AXI-Lite 實現RPC調用硬件函數服務 &#x1f44b; 本文介紹如何基于 AXI-Lite 總線設計一個通用的“硬件函數調用框架”。主機端&#xff08;PS&#xff09;只需通過寄存器寫入參數與啟動標志&#xff0c;即可觸發 PL 模塊執行指定算法邏輯&#xff0c;并將結果返回。 該機制本…

[spring-cloud: NamedContextFactory ClientFactoryObjectProvider]-源碼閱讀

依賴 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId><version>4.3.0</version> </dependency>源碼 NamedContextFactory NamedContextFactory 類通過創建多個子…

HBase MOB技術特點及使用場景介紹

在 HBase 2.0 版本之前,雖然 HBase 能夠存儲從 1 字節到 10MB 大小的二進制對象 ,但其讀寫路徑主要針對小于 100KB 的值進行了優化。當面對大量大小在 100KB - 10MB 之間的數據時,傳統的存儲方式就會暴露出問題。例如,當存儲大量的圖片、文檔或短視頻等中等大小對象時,由于…

Ubuntu 配置密鑰+密碼登錄

目錄 1、密鑰生成 2、發送公鑰至 需要連接的服務器 3、選用私鑰登錄 1、密鑰生成 ssh-keygen -t rsa -b 4096 -C "angindem"2、發送公鑰至 需要連接的服務器 將.ssh中的id_rsa.pub 的密鑰&#xff0c;放在authorized_keys中 注意&#xff1a;.ssh 文件夾一定賦予…

谷歌瀏覽器Chrome 緩存遷移

步驟 1&#xff1a;準備數據遷移1. 關閉 Chrome 及所有后臺進程在任務管理器&#xff08;CtrlShiftEsc&#xff09;中結束所有 chrome.exe 進程。 2. 備份并移動原數據- 將 C:\Users\xxx\AppData\Local\Google\Chrome\User Data **整個文件夾**復制到新位置&#xff08;如 G:\…

Java中的RabbitMQ完全指南

Java中的RabbitMQ完全指南 1. 引言 什么是RabbitMQ RabbitMQ是一個開源的消息代理和隊列服務器&#xff0c;實現了高級消息隊列協議&#xff08;AMQP&#xff09;。它充當應用程序之間的消息中間件&#xff0c;允許分布式系統中的不同組件進行異步通信。RabbitMQ使用Erlang語言…

【MCAL】AUTOSAR架構下SPI數據異步DMA收發具體實現

目錄 前言 正文 1.依賴的硬件特性 1.1.SPI硬件特性 1.1.1. TXFIFO Single Move Mode 1.1.2. RXFIFO Single Move Mode 1.1.3. Move Counter模式 1.1.4. PT中斷 1.2.IR硬件特性 1.3.DMA硬件特性 1.3.1. DMA通道硬件請求 1.3.2. DMA循環Buffer 1.3.3. DMA Link List …

【Unity】協程 Async

協程 協程是 Unity 內置的異步機制&#xff0c;通過 yield 暫停執行&#xff0c;實現任務在多幀中分段執行。與普通函數不同&#xff0c;協程可在執行過程中掛起和恢復&#xff0c;呈現"并發"效果&#xff0c;但本質上仍運行于主線程。若在協程中進行耗時操作&#…

《揭秘!10 分鐘洞悉 Prompt、Function Calling、MCP 與 AI agent 奧秘》

Prompt、Function Calling、MCP、AI agent這些術語頻繁闖入我們的視野&#xff0c;它們到底都是什么、有啥關系。只需十分鐘&#xff0c;咱們抽絲剝繭&#xff0c;揭開它們的神秘面紗&#xff0c;輕松掌握這些關鍵概念 并了解AI agent 完整執行流程。 一、提示詞&#xff08;P…