Java工具庫——Hutool的常用方法

谢双元小号發表於2024-07-20
Hutool-All(或簡稱Hutool)是一個功能強大的Java程式設計工具庫,旨在簡化Java應用程式的開發。
它提供了大量的工具類和方法,涵蓋了各種常見任務,包括字串處理、日期時間操作、檔案操作、網路通訊、加密解密、資料轉換、影像處理、JSON操作、Excel處理、郵件傳送等等。
以下是Hutool-All的一些主要功能和模組的詳細介紹
字串工具(StrUtil):
提供了各種字串處理方法,如判空、擷取、拼接、格式化、大小寫轉換、正規表示式匹配等。
日期時間工具(DateUtil):
支援日期時間的格式化、解析、計算、比較、時區轉換、時間間隔計算等功能。
檔案工具(FileUtil):
提供了檔案和目錄的操作,包括複製、移動、刪除、檔案大小計算、檔案型別判斷等。
加密解密工具(SecureUtil):
包括各種常見的加密演算法和雜湊函式,如MD5、SHA-1、SHA-256、DES、AES等。
網路工具(NetUtil):
提供了網路相關的工具方法,如獲取本機IP地址、埠掃描、HTTP請求傳送等。
資料轉換工具(Convert):
支援各種資料型別之間的轉換,包括字串、數字、日期、集合等。
JSON工具(JSONUtil):
提供了JSON物件的轉換、解析、格式化和操作,方便與JSON資料的互動。
Excel工具(ExcelUtil):
支援Excel檔案的讀取和寫入,包括讀取和寫入Excel表格資料、樣式設定等。
影像工具(ImageUtil):
提供了影像處理功能,包括縮放、裁剪、旋轉、水印新增、格式轉換等。
郵件工具(MailUtil):
用於傳送電子郵件的工具,支援文字和HTML郵件的傳送。
定時任務工具(CronUtil):
提供了Cron表示式的解析和計算,方便定時任務的管理和排程。
日誌工具(Log):
提供了簡化日誌記錄的方法,允許以不同級別輸出日誌資訊。
其他工具(MiscUtil):
包含了一些其他雜項工具,如SystemUtil(系統資訊獲取)、RuntimeUtil(執行時資訊獲取)等。

  字串判空和非空檢查

java
程式碼解讀
複製程式碼
import cn.hutool.core.util.StrUtil;

String str = "Hello, World!";
boolean isEmpty = StrUtil.isEmpty(str); // 檢查字串是否為空
boolean isNotEmpty = StrUtil.isNotEmpty(str); // 檢查字串是否非空
  1. 字串拼接
java
程式碼解讀
複製程式碼
String str1 = "Hello";
String str2 = "World";
String result = StrUtil.format("{} {}!", str1, str2); // 使用{}佔位符拼接字串
  1. 日期格式化
java
程式碼解讀
複製程式碼
import cn.hutool.core.date.DateUtil;

Date date = new Date();
String formattedDate = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss"); // 格式化日期
  1. 日期計算
java
程式碼解讀
複製程式碼
import cn.hutool.core.date.DateUtil;

Date now = new Date();
Date nextDay = DateUtil.offsetDay(now, 1); // 計算下一天的日期
  1. 檔案複製
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

FileUtil.copy("source.txt", "destination.txt", true); // 複製檔案,第三個參數列示是否覆蓋
  1. MD5加密
java
程式碼解讀
複製程式碼
import cn.hutool.crypto.SecureUtil;

String input = "password123";
String md5Hash = SecureUtil.md5(input); // 計算MD5雜湊值
  1. HTTP請求傳送
java
程式碼解讀
複製程式碼
import cn.hutool.http.HttpUtil;

String response = HttpUtil.get("https://www.example.com"); // 傳送GET請求
  1. JSON轉換
java
程式碼解讀
複製程式碼
import cn.hutool.json.JSONUtil;

String jsonString = "{\"name\":\"John\",\"age\":30}";
JSONObject jsonObject = JSONUtil.parseObj(jsonString); // 將JSON字串轉換為JSON物件
  1. Excel讀取
java
程式碼解讀
複製程式碼
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelReader;

ExcelReader reader = ExcelUtil.getReader("data.xlsx"); // 讀取Excel檔案
List<List<Object>> dataList = reader.read(); // 讀取資料
  1. 影像縮放
java
程式碼解讀
複製程式碼
import cn.hutool.core.img.ImgUtil;

ImgUtil.scale(new File("input.jpg"), new File("output.jpg"), 0.5f); // 縮放影像大小
  1. 傳送郵件
java
程式碼解讀
複製程式碼
import cn.hutool.extra.mail.MailUtil;
import cn.hutool.extra.mail.MailAccount;

MailAccount account = new MailAccount();
account.setHost("smtp.example.com");
account.setPort(25);
account.setAuth(true);
account.setUser("your@email.com");
account.setPass("yourpassword");

MailUtil.send(account, "recipient@example.com", "Subject", "Message Body", false);
  1. 解析Cron表示式
java
程式碼解讀
複製程式碼
import cn.hutool.cron.CronUtil;

String cron = "0 0/1 * * * ?";
CronUtil.schedule("testJob", cron, () -> System.out.println("執行任務")); // 解析Cron表示式並執行任務
CronUtil.start();
  1. 檔案讀取
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

String content = FileUtil.readUtf8String("example.txt"); // 讀取檔案內容
  1. SHA-256加密
java
程式碼解讀
複製程式碼
import cn.hutool.crypto.digest.DigestUtil;

String input = "password123";
String sha256Hash = DigestUtil.sha256Hex(input); // 計算SHA-256雜湊值
  1. HTTP POST請求
java
程式碼解讀
複製程式碼
import cn.hutool.http.HttpUtil;

String postData = "data=example";
String response = HttpUtil.post("https://www.example.com", postData); // 傳送POST請求
  1. URL編碼和解碼
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.URLUtil;

String url = "https://www.example.com?q=Hutool-All";
String encodedUrl = URLUtil.encode(url); // URL編碼
String decodedUrl = URLUtil.decode(encodedUrl); // URL解碼
  1. 判斷檔案是否存在
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

boolean fileExists = FileUtil.exist("example.txt"); // 判斷檔案是否存在
  1. AES加密和解密
java
程式碼解讀
複製程式碼
import cn.hutool.crypto.symmetric.SymmetricCrypto;

SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, "yourkey");
String content = "Sensitive data";
String encrypted = aes.encryptBase64(content); // AES加密
String decrypted = aes.decryptStr(encrypted); // AES解密
  1. URL構建
java
程式碼解讀
複製程式碼
import cn.hutool.http.HtmlUtil;

String baseUrl = "https://www.example.com";
String query = "q=Hutool-All";
String completeUrl = HtmlUtil.encodeUrl(baseUrl, query); // 構建帶查詢引數的URL
  1. XML解析
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.XmlUtil;

String xml = "<user><name>John</name><age>30</age></user>";
Element root = XmlUtil.readXML(xml);
String name = XmlUtil.elementText(root, "name"); // 解析XML文件
  1. 檔案寫入
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

String content = "This is a test.";
FileUtil.writeUtf8String(content, "example.txt"); // 寫入檔案內容
  1. 身份證號碼驗證
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.IdcardUtil;

String idCard = "330682200001010101";
boolean valid = IdcardUtil.isValidCard(idCard); // 驗證身份證號碼是否有效
  1. 生成UUID
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.IdUtil;

String uuid = IdUtil.simpleUUID(); // 生成簡單UUID
  1. HTTP下載檔案
java
程式碼解讀
複製程式碼
import cn.hutool.http.HttpUtil;

HttpUtil.downloadFile("https://www.example.com/file.zip", "downloaded.zip"); // 下載檔案
  1. Map轉換為Bean
java
程式碼解讀
複製程式碼
import cn.hutool.core.bean.BeanUtil;

Map<String, Object> map = new HashMap<>();
map.put("name", "John");
map.put("age", 30);
User user = BeanUtil.mapToBean(map, User.class, true); // 將Map轉換為Java Bean
  1. Enum轉換工具
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.EnumUtil;

EnumUtil.fromString(WeekEnum.class, "SUND

AY"); // 透過名稱獲取Enum常量
  1. IP地址驗證
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.NetUtil;

boolean validIp = NetUtil.isUsableLocalPort(80); // 檢查埠是否可用
  1. 讀取系統屬性
java
程式碼解讀
複製程式碼
import cn.hutool.system.SystemUtil;

String osName = SystemUtil.get("os.name"); // 讀取系統屬性
  1. 正規表示式匹配
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.ReUtil;

String content = "The price is $100.99";
String regex = "The price is \\$(\\d+\\.\\d+)";
String price = ReUtil.get(regex, content, 1); // 使用正規表示式匹配並提取價格
  1. Base64編碼
java
程式碼解讀
複製程式碼
import cn.hutool.core.codec.Base64;

String source = "Base64 Encoding";
String encoded = Base64.encode(source); // 進行Base64編碼
String decoded = Base64.decodeStr(encoded); // 進行Base64解碼
  1. 隨機數生成
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.RandomUtil;

int randomInt = RandomUtil.randomInt(1, 100); // 生成指定範圍內的隨機整數
  1. 獲取類載入器
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.ClassLoaderUtil;

ClassLoader classLoader = ClassLoaderUtil.getClassLoader(); // 獲取當前執行緒的類載入器
  1. 獲取檔案字尾名
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

String fileName = "example.txt";
String extension = FileUtil.extName(fileName); // 獲取檔案的字尾名
  1. LRU快取
java
程式碼解讀
複製程式碼
import cn.hutool.cache.Cache;
import cn.hutool.cache.CacheUtil;

Cache<String, String> lruCache = CacheUtil.newLRUCache(100);
lruCache.put("key1", "value1");
String value = lruCache.get("key1"); // 獲取LRU快取中的值
  1. XML格式化
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.XmlUtil;

String xml = "<user><name>John</name><age>30</age></user>";
String formattedXml = XmlUtil.format(xml); // 格式化XML文件
  1. 路徑拼接
java
程式碼解讀
複製程式碼
import cn.hutool.core.io.FileUtil;

String path1 = "C:\\example\\dir";
String path2 = "file.txt";
String fullPath = FileUtil.join(path1, path2); // 拼接路徑
  1. CSV讀取
java
程式碼解讀
複製程式碼
import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;

CsvReader reader = new CsvReader("data.csv", CharsetUtil.CHARSET_UTF_8);
CsvData data = reader.read(); // 讀取CSV檔案內容
  1. Base58編碼
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.StrUtil;

String input = "Base58 Encoding";
String encoded = StrUtil.base58Encode(input); // 進行Base58編碼
String decoded = StrUtil.base58Decode(encoded); // 進行Base58解碼
  1. URL引數解析
java
程式碼解讀
複製程式碼
import cn.hutool.http.HtmlUtil;

String query = "name=John&age=30";
Map<String, String> paramMap = HtmlUtil.decodeParamMap(query, "UTF-8"); // 解析URL引數
  1. 物件克隆
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.ObjectUtil;

User original = new User("John", 30);
User clone = ObjectUtil.cloneByStream(original); // 使用流實現物件深克隆
  1. BigDecimal運算
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.NumberUtil;

BigDecimal num1 = new BigDecimal("10.5");
BigDecimal num2 = new BigDecimal("5.2");
BigDecimal result = NumberUtil.add(num1, num2); // 使用BigDecimal進行精確運算
  1. 隨機字串生成
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.RandomUtil;

String randomStr = RandomUtil.randomString(8); // 生成指定長度的隨機字串
  1. URL連結合併
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.URLUtil;

String base = "https://www.example.com";
String relative = "path/to/resource";
String fullUrl = URLUtil.complateUrl(base, relative); // 合併URL連結
  1. List分組
java
程式碼解讀
複製程式碼
import cn.hutool.core.collection.CollUtil;

List<String> data = Arrays.asList("A", "B", "C", "D", "E");
List<List<String>> groups = CollUtil.subList(data, 2); // 將List分成指定大小的子List
  1. 環境變數獲取
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.StrUtil;

String javaHome = StrUtil.format("Java Home: {}", SystemUtil.get("java.home")); // 獲取系統環境變數
  1. 獲取遠端檔案大小
java
程式碼解讀
複製程式碼
import cn.hutool.http.HttpUtil;

long fileSize = HttpUtil.downloadFile("https://www.example.com/largefile.zip", FileUtil.file("temp.zip")).length(); // 獲取遠端檔案大小
  1. 執行緒休眠
java
程式碼解讀
複製程式碼
import cn.hutool.core.thread.ThreadUtil;

ThreadUtil.sleep(2000); // 休眠2秒
  1. 物件比較
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.ObjectUtil;

boolean isEqual = ObjectUtil.equal(obj1, obj2); // 比較兩個物件是否相等
  1. ZIP檔案解壓
java
程式碼解讀
複製程式碼
import cn.hutool.core.util.ZipUtil;

ZipUtil.unzip("example.zip", "destinationDir"); // 解壓ZIP檔案到指定目錄
  1. Map鍵值互換
java
程式碼解讀
複製程式碼
import cn.hutool.core.collection.CollUtil;

Map<String, Integer> originalMap = new HashMap<>();
Map<Integer, String> swappedMap = CollUtil.reverse(originalMap); // 交換Map的鍵和值

這些方法代表了Hutool-All庫中的常見用例。請注意,Hutool-All庫提供了更多方法和功能,可以根據需要選擇合適的工具來簡化Java開發任務。


作者:IT小輝同學
連結:https://juejin.cn/post/7294098092215468068
來源:稀土掘金
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關文章