在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
- copyLarge: 同copy,支持2GB以上數據的複製
- lineIterator: 從輸入流返回一個迭代器,根據參數要求讀取的數據量,全部讀取,如果數據不夠,則失敗
org.apache.commons.io.FileUtils
- deletebDirectory: 刪除文件夾
- 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)中的一個
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
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