一、簡介
Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅
官方文檔: https://www.hutool.cn/docs/#/
二、包含組件
一個Java基礎工具類,對文件、流、加密解密、轉碼、正則、線程、XML等JDK方法進行封裝,組成各種Util工具類,同時提供以下組件:
可以通過引入hutool-all方式引入所有模塊,但還是不建議引入所有模塊,因為絕大部分功能項目可能都用不上,建議只引入你需要的模塊。
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version>
</dependency>
hutool工具使用
1.NumberUtil 數字工具類
parseInt()//string轉int
parseLong()//string轉Long
add()//精確加法
sub()//精確減法
div()//精確除法
mul()//精確乘法
isGreater()//比較大小,返回布爾值
equals()//比較是否相等
round()//保留幾位小數
isNumber()//是否為數字
isInteger()//是否是整數
isPrimes()//是否為質數
2.ArrayUtil 數組工具類
isEmpty()//數組是否為空
insert()//將新元素插入到到已有數組中的某個位置
addAll()//將多個數組合并在一起
copy()//數組復制
split()//拆分數組為幾個等份
nullToEmpty()//數組元素中的null轉換為""
contains()//數組中是否包含元素
isArray()//對象是否為數組對象
sub()//獲取子數組
join()//指定分隔符將數組轉換為字符串
reverse()//反轉數組
min()//取最小值
max()//取最大值
swap()//交換數組中兩個位置的值
distinct()//去重數組中的元素,去重后生成新的數組,原數組不變
3.ClassUtil 類工具類
getClassName()//獲取類名對象
loadClass()//加載類
invoke()//執行方法
4.IdUtil ID生成器工具類
fastSimpleUUID()//簡化的UUID,去掉了橫線,使用性能更好的ThreadLocalRandom生成UUID
createSnowflake()//返回Snowflake算法生成器,使用snowflake.nextId()生成下一個id
5.PhoneUtil 手機號工具類
isMobile()//驗證是否為手機號碼(中國)
isTel()//驗證是否為座機號碼(中國)
hideBefore()//隱藏手機號前7位 替換字符為"*"
hideBetween()//隱藏手機號中間4位 替換字符為"*"
hideAfter()//隱藏手機號最后4位 替換字符為"*"
subBefore()//獲取手機號前3位
6.RandomUtil 隨機工具類
randomInt()//獲得指定范圍內的隨機數
randomEle()//隨機獲得列表中的元素
randomEleSet()//隨機獲得列表中的一定量的不重復元素,返回Set
randomString()//獲得一個隨機的字符串
randomNumbers()//獲得一個只包含數字的字符串
randomDate()//以給定日期為基準,隨機產生一個日期
7.ReflectUtil 反射工具類
getConstructor()//查找類中的指定參數的構造方法,如果找到構造方法,會自動設置可訪問為true
getFieldName()//獲取字段名
getField()//查找指定類中的指定name的字段
getFieldValue()//獲取字段值
setFieldValue()//設置字段值
getPublicMethod()//查找指定Public方法
getMethod()//查找指定方法
newInstance()//實例化對象
invoke()//執行方法
8.ReUtil 正則相關工具類
getGroup0()//獲得匹配的字符串,獲得正則中分組0的內容
get()//獲得匹配的字符串
getAllGroups()//獲得匹配的字符串匹配到的所有分組
delFirst()//刪除匹配的第一個內容
delAll()//刪除匹配的全部內容
delPre()//刪除正則匹配到的內容之前的字符
findAll()//取得內容中匹配的所有結果
count()//計算指定字符串中匹配的個數
contains()//指定內容中是否有表達式匹配的內容
replaceAll()//正則替換指定值
9.StrUtil 字符串工具類
isBlank()//字符串是否為空白
isEmpty()//字符串是否為空
startWith()//字符串是否以給定字符開始
endWith()//字符串是否以給定字符結尾
contains()//指定字符是否在字符串中出現過
genSetter()//生成set方法名
genGetter()//生成get方法名
removeAll()//移除字符串中所有給定字符串
removeAny()//移除字符串中所有給定字符串,當某個字符串出現多次,則全部移除
upperFirst()//大寫首字母
lowerFirst()//小寫首字母
strip()//去除兩邊的指定字符串
cleanBlank()//清理空白字符
maxLength()//限制字符串長度,如果超過指定長度,截取指定長度并在末尾加"..."
subBetween()//截取指定字符串中間部分,不包括標識字符串
repeat()//重復某個字符
format()//格式化文本, {} 表示占位符
utf8Str()//將對象轉為字符串
join()//指定分隔符將多個對象轉換為字符串
toUnderlineCase()//將駝峰式命名的字符串轉換為下劃線方式
toSymbolCase()//將駝峰式命名的字符串轉換為使用符號連接方式
toCamelCase()//將下劃線方式命名的字符串轉換為駝峰式
padPre()//前面補充字符串以滿足最小長度
padAfter()//后面補充字符串以滿足最小長度
center()//居中字符串,兩邊補充指定字符串
builder()//創建StringBuilder對象
getReader()//獲得StringReader
getWriter()//獲得StringWriter
count()//統計指定內容中包含指定字符串的數量
cut()//將字符串切分為N等份
indexOf()//指定范圍內查找指定字符
reverse()//反轉字符串
replace()//替換字符串中的指定字符串
hide()//替換指定字符串的指定區間內字符為"*"
similar()//計算兩個字符串的相似度
concat()//連接多個字符串為一個
10.URLUtil URL統一資源定位符相關工具類
url()//通過一個字符串形式的URL地址創建URL對象
getURL()//獲得URL
getHost()//獲取URL中域名部分
encode()//編碼URL,默認使用UTF-8編碼
getPath()//獲得path部分
normalize()//標準化URL字符串
11.XmlUtil XML工具類
readXML()//讀取解析XML文件
parseXml()//將String類型的XML轉換為XML文檔
toStr()//將XML文檔轉換為String
format()//格式化XML輸出
toFile()//將XML文檔寫入到文件
write()//將XML文檔寫出
createXml()//創建XML文檔
getRootElement()//獲得XML文檔根節點
getElements()//根據節點名獲得子節點列表
getElement()//根據節點名獲得第一個子節點
12.BeanUtil Bean工具類
getFieldValue()//獲得字段值,通過反射直接獲得字段值,并不調用getXXX方法
setFieldValue()//設置字段值,,通過反射設置字段值,并不調用setXXX方法
mapToBean()//Map轉換為Bean對象
fillBeanWithMap()//使用Map填充Bean對象
toBean()//對象或Map轉Bean
beanToMap()//對象轉Map
copyProperties()//按照Bean對象屬性創建對應的Class對象,并忽略某些屬性
13.CollUtil 集合相關工具類
union()//多個集合的并集
unionDistinct()//多個集合的非重復并集
intersection()//多個集合的交集
disjunction()//兩個集合的差集
subtract()//計算集合的單差集,即只返回【集合1】中有,但是【集合2】中沒有的元素
contains()//判斷指定集合是否包含指定值
join()//指定分隔符將集合轉換為字符串
distinct()//去重集合
sub()//截取集合的部分
split()//對集合按照指定長度分段
filter()//過濾,此方法產生一個新集合
indexOfAll()//獲取匹配規則定義中匹配到元素的所有位置
addAll()//將指定對象全部加入到集合中
addAllIfNotContains()//將另一個列表中的元素加入到列表中,如果列表中已經存在此元素則忽略之
sort()//排序集合
forEach()//循環遍歷
reverse()//反序給定List,會在原List基礎上直接修改
reverseNew()//反序給定List,會創建一個新的List,原List數據不變
max()//取最大值
min()//取最小值
14.CalendarUtil 針對Calendar對象封裝工具類
calendar()//轉換為Calendar對象
truncate()//修改日期為某個時間字段起始時間
round()//修改日期為某個時間字段四舍五入時間
ceiling()//修改日期為某個時間字段結束時間
yearAndQuarter()//獲得指定日期區間內的年份和季度
compare()//安全的Calendar比較
age()//計算指定生日在某年的年齡
formatChineseDate()//將指定Calendar時間格式化為純中文形式
parseByPatterns()//通過給定的日期格式解析日期時間字符串
15.DateUtil 時間工具類
date()//當前時間
current()//當前時間的時間戳
now()//當前時間,格式 yyyy-MM-dd HH:mm:ss
today()//當前日期,格式 yyyy-MM-dd
year()//獲得年的部分
month()//獲得月份,從0開始計數
weekOfYear()//獲得指定日期是所在年份的第幾周
weekOfMonth()//獲得指定日期是所在月份的第幾周
dayOfMonth()//獲得指定日期是這個日期所在月份的第幾天
dayOfYear()//獲得指定日期是這個日期所在年的第幾天
dayOfWeek()//獲得指定日期是星期幾,1表示周日,2表示周一
hour()//獲得指定日期的小時數部分
minute()//獲得指定日期的分鐘數部分
second()//獲得指定日期的秒數部分
millsecond()//獲得指定日期的毫秒數部分
format()//根據特定格式格式化日期
formatChineseDate()//格式化為中文日期格式
parse()//構建DateTime對象
yesterday()//昨天
tomorrow()//明天
lastWeek()//上周
nextWeek()//下周
lastMonth()//上個月
offsetDay()//偏移天
offsetHour()//偏移小時
offsetMinute//偏移分鐘
offset()//獲取指定日期偏移指定時間后的時間,生成的偏移日期不影響原日期
between()//判斷兩個日期相差的時長,只保留絕對值
betweenDay()//判斷兩個日期相差的天數
betweenMonth()//計算兩個日期相差月數
betweenYear()//計算兩個日期相差年數
formatBetween()//格式化日期間隔輸出
timer()//計時器
isExpired()//判定在指定檢查時間是否過期
timeToSecond()//HH:mm:ss 時間格式字符串轉為秒數
secondToTime()//秒數轉為時間格式(HH:mm:ss)
range()//創建日期范圍生成器
16.ImgUtil 圖片處理工具類
scale()//縮放圖像(按比例縮放)
cut()//圖像切割(按指定起點坐標和寬高切割)
slice()//圖像切片(指定切片的寬度和高度)
convert()//圖像類型轉換
gray()//彩色轉為黑白
binary()//彩色轉為黑白二值化圖片
pressText()//給圖片添加文字水印
pressImage()//給圖片添加圖片水印
rotate()//旋轉圖片為指定角度
flip()//水平翻轉圖像
compress()//壓縮圖像,輸出圖像只支持jpg文件
copyImage()//將已有Image復制新的一份出來
createImage()//根據文字創建圖片
createFont()//根據文件創建字體
writeJpg()//寫出圖像為JPG格式
write()//按照目標格式寫出圖像
getReader()//獲得ImageReader
read()//從文件中讀取圖片
randomColor()//生成隨機顏色
backgroundRemoval()//背景移除
17.FileUtil 文件工具類
ls()//列出目錄文件
loopFiles()//遞歸遍歷目錄以及子目錄中的所有文件
listFileNames()//獲得指定目錄下所有文件
file()//創建File對象
exist()//判斷文件是否存在
lastModifiedTime()//指定文件最后修改時間
size()//計算目錄或文件的總大小
touch()//創建文件及其父目錄
del()//刪除文件或者文件夾
clean()//清空文件夾
mkdir()//創建文件夾
copyFile()//拷貝文件
copy()//復制文件或目錄
rename()//修改文件或目錄的文件名
getAbsolutePath()//獲取絕對路徑
equals()//檢查兩個文件是否是同一個文件
contentEquals()//比較兩個文件內容是否相同
pathEquals()//文件路徑是否相同
getName()//返回文件名
getSuffix()//獲取文件后綴名,擴展名不帶“.”
getPrefix()//返回主文件名
pathEndsWith()//判斷文件路徑是否有指定后綴,忽略大小寫
getType()//根據文件流的頭部信息獲得文件類型
readString()//讀取文件內容
readLines()//從文件中讀取每一行數據
readLine()//單行處理文件內容
load()//按照給定的readerHandler讀取文件中的數據
writeUtf8String()//將String寫入文件,覆蓋模式,字符集為UTF-8
writeString()//將String寫入文件,覆蓋模式
appendUtf8String()//將String寫入文件,UTF-8編碼追加模式
appendString()//將String寫入文件,追加模式
writeLines()//將list寫入文件,覆蓋模式
appendLines()//將list寫入文件,追加模式
writeMap()//將Map寫入文件
getParent()//獲取指定層級的父路徑
tail()//文件內容跟隨器
18.IoUtil IO工具類
copy()//將Reader中的內容復制到Writer中
read()//從流中讀取內容
toStream()//轉為流
write()//將byte[]寫到流中
flush()//從緩存中刷出數據
close()//關閉
19.TreeUtil 樹工具類
build()//樹構建
20.ThreadUtil 線程池工具
newExecutor()//新建一個線程池
execute()//直接在公共線程池中執行線程
execAsync()//執行異步方法
newThread()//創建新線程
sleep()//掛起當前線程
createThreadLocal()//創建本地線程對象
interrupt()//結束線程
21.JSONUtil JSON工具類
createObj()//創建JSONObject
createArray()//創建 JSONArray
parseObj()//JSON字符串轉JSONObject對象
parseArray()//JSON字符串轉JSONArray
parse()//轉換對象為JSON
toJsonStr()//轉為JSON字符串
toBean()//JSON字符串轉為實體類對象
toList()//將JSONArray轉換為Bean的List
formatJsonStr()//格式化JSON字符串
22.ExcelUtil Excel工具類
readBySax()//通過Sax方式讀取Excel
getReader()//獲取Excel讀取器
getWriter()//獲得ExcelWriter