在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。
以下工具類、方法按使用流行度排名,參考數據來源於Github上隨機選取的5萬個開源項目源碼。
一. org.apache.commons.io.IOUtils
-
closeQuietly:關閉一個IO流、socket、或者selector且不拋出異常,通常放在finally塊
-
toString:轉換IO流、 Uri、 byte[]為String
-
copy:IO流數據復制,從輸入流寫到輸出流中,最大支持2GB
-
toByteArray:從輸入流、URI獲取byte[]
-
write:把字節. 字符等寫入輸出流
-
toInputStream:把字符轉換為輸入流
-
readLines:從輸入流中讀取多行數據,返回List<String>
-
copyLarge:同copy,支持2GB以上數據的復制
-
lineIterator:從輸入流返回一個迭代器,根據參數要求讀取的數據量,全部讀取,如果數據不夠,則失敗
二. org.apache.commons.io.FileUtils
-
deleteDirectory:刪除文件夾
-
readFileToString:以字符形式讀取文件內容
-
deleteQueitly:刪除文件或文件夾且不會拋出異常
-
copyFile:復制文件
-
writeStringToFile:把字符寫到目標文件,如果文件不存在,則創建
-
forceMkdir:強制創建文件夾,如果該文件夾父級目錄不存在,則創建父級
-
write:把字符寫到指定文件中
-
listFiles:列舉某個目錄下的文件(根據過濾器)
-
copyDirectory:復制文件夾
-
forceDelete:強制刪除文件
三. org.apache.commons.lang.StringUtils
-
isBlank:字符串是否為空 (trim后判斷)
-
isEmpty:字符串是否為空 (不trim並判斷)
-
equals:字符串是否相等
-
join:合並數組為單一字符串,可傳分隔符
-
split:分割字符串
-
EMPTY:返回空字符串
-
trimToNull:trim后為空字符串則轉換為null
-
replace:替換字符串
四. org.apache.http.util.EntityUtils
-
toString:把Entity轉換為字符串
-
consume:確保Entity中的內容全部被消費。可以看到源碼里又一次消費了Entity的內容,假如用戶沒有消費,那調用Entity時候將會把它消費掉
-
toByteArray:把Entity轉換為字節流
-
consumeQuietly:和consume一樣,但不拋異常
-
getContentCharset:獲取內容的編碼
五. org.apache.commons.lang3.StringUtils
-
isBlank:字符串是否為空 (trim后判斷)
-
isEmpty:字符串是否為空 (不trim並判斷)
-
equals:字符串是否相等
-
join:合並數組為單一字符串,可傳分隔符
-
split:分割字符串
-
EMPTY:返回空字符串
-
replace:替換字符串
-
capitalize:首字符大寫
六. org.apache.commons.io.FilenameUtils
-
getExtension:返回文件后綴名
-
getBaseName:返回文件名,不包含后綴名
-
getName:返回文件全名
-
concat:按命令行風格組合文件路徑(詳見方法注釋)
-
removeExtension:刪除后綴名
-
normalize:使路徑正常化
-
wildcardMatch:匹配通配符
-
seperatorToUnix:路徑分隔符改成unix系統格式的,即/
-
getFullPath:獲取文件路徑,不包括文件名
-
isExtension:檢查文件后綴名是不是傳入參數(List<String>)中的一個
七. org.springframework.util.StringUtils
-
hasText:檢查字符串中是否包含文本
-
hasLength:檢測字符串是否長度大於0
-
isEmpty:檢測字符串是否為空(若傳入為對象,則判斷對象是否為null)
-
commaDelimitedStringToArray:逗號分隔的String轉換為數組
-
collectionToDelimitedString:把集合轉為CSV格式字符串
-
replace 替換字符串
-
delimitedListToStringArray:相當於split
-
uncapitalize:首字母小寫
-
collectionToDelimitedCommaString:把集合轉為CSV格式字符串
-
tokenizeToStringArray:和split基本一樣,但能自動去掉空白的單詞
八. org.apache.commons.lang.ArrayUtils
-
contains:是否包含某字符串
-
addAll:添加整個數組
-
clone:克隆一個數組
-
isEmpty:是否空數組
-
add:向數組添加元素
-
subarray:截取數組
-
indexOf:查找某個元素的下標
-
isEquals:比較數組是否相等
-
toObject:基礎類型數據數組轉換為對應的Object數組
九. org.apache.commons.lang.StringEscapeUtils
-
參考十五:
org.apache.commons.lang3.StringEscapeUtils
十. org.apache.http.client.utils.URLEncodedUtils
-
format:格式化參數,返回一個HTTP POST或者HTTP PUT可用application/x-www-form-urlencoded字符串
-
parse:把String或者URI等轉換為List<NameValuePair>
十一. org.apache.commons.codec.digest.DigestUtils
-
md5Hex:MD5加密,返回32位字符串
-
sha1Hex:SHA-1加密
-
sha256Hex:SHA-256加密
-
sha512Hex:SHA-512加密
-
md5:MD5加密,返回16位字符串
十二. org.apache.commons.collections.CollectionUtils
-
isEmpty:是否為空
-
select:根據條件篩選集合元素
-
transform:根據指定方法處理集合元素,類似List的map()
-
filter:過濾元素,類似List的filter()
-
find:基本和select一樣
-
collect:和transform 差不多一樣,但是返回新數組
-
forAllDo:調用每個元素的指定方法
-
isEqualCollection:判斷兩個集合是否一致
十三. org.apache.commons.lang3.ArrayUtils
-
contains:是否包含某個字符串
-
addAll:添加整個數組
-
clone:克隆一個數組
-
isEmpty:是否空數組
-
add:向數組添加元素
-
subarray:截取數組
-
indexOf:查找某個元素的下標
-
isEquals:比較數組是否相等
-
toObject:基礎類型數據數組轉換為對應的Object數組
十四. org.apache.commons.beanutils.PropertyUtils
-
getProperty:獲取對象屬性值
-
setProperty:設置對象屬性值
-
getPropertyDiscriptor:獲取屬性描述器
-
isReadable:檢查屬性是否可訪問
-
copyProperties:復制屬性值,從一個對象到另一個對象
-
getPropertyDiscriptors:獲取所有屬性描述器
-
isWriteable:檢查屬性是否可寫
-
getPropertyType:獲取對象屬性類型
十五. org.apache.commons.lang3.StringEscapeUtils
-
unescapeHtml4:轉義html
-
escapeHtml4:反轉義html
-
escapeXml:轉義xml
-
unescapeXml:反轉義xml
-
escapeJava:轉義unicode編碼
-
escapeEcmaScript:轉義EcmaScript字符
-
unescapeJava:反轉義unicode編碼
-
escapeJson:轉義json字符
-
escapeXml10:轉義Xml10
這個現在已經廢棄了,建議使用commons-text包里面的方法。
十六. org.apache.commons.beanutils.BeanUtils
-
copyPeoperties:復制屬性值,從一個對象到另一個對象
-
getProperty:獲取對象屬性值
-
setProperty:設置對象屬性值
-
populate:根據Map給屬性復制
-
copyPeoperty:復制單個值,從一個對象到另一個對象
-
cloneBean:克隆bean實例
現在你只要了解了以上16種最流行的工具類方法,你就不必要再自己寫工具類了,不必重復造輪子。
大部分工具類方法通過其名字就能明白其用途,如果不清楚的,可以看下別人是怎么用的,或者去網上查詢其用法。
另外,工具類,根據阿里開發手冊,包名如果要使用util不能帶s,工具類命名為 XxxUtils。
·END·
程序員的成長之路
路雖遠,行則必至
本文原發於 同名微信公眾號「程序員的成長之路」,回復「1024」你懂得,給個贊唄。
回復 [ 520 ] 領取程序員最佳學習方式
回復 [ 256 ] 查看 Java 程序員成長規划