常用的 Java 工具类之 Apache 全家桶使用
平常我們在日常的開發(fā)中會一些通用的功能封裝成一些工具類,以便之后復用。但是有些常用功能,業(yè)界已經(jīng)存在,我們無需造輪子,只需直接使用或借用它們的 Api ,構(gòu)建我們的自己項目中工具類。這篇首先介紹平常用到的 Apache 工具全家桶。
- commons-lang3
- commons-io
- commons-collections
commons-lang3
The standard Java libraries fail to provide enough methods for manipulation of its core classes. Apache Commons Lang provides these extra methods.
正如 Apache 官方介紹,這個包主要擴展 java.lang 下核心類的方法,提供工具類方便我們平常 java.lang 下面的類,如 String , Date。以下介紹其常用的方法。
StringUtils
字符串相關(guān)操作,擴展 String 相關(guān)方法,可以使我們方便處理字符串,滿足我們的日常使用。
StringUtils.isBlank || StringUtils.isEmpty 判斷字符串是否為空
// 兩者都可以用于判斷字符串是為空 isBlank 主要用于判斷空白字符串 空字符("") 以及Null 而 isEmpty 主要用于判斷空字符("")以及Null StringUtils.isBlank(" ") = true StringUtils.isEmpty(" ") = false 復制代碼StringUtils.countMatches 用于計數(shù)匹配上字符的數(shù)量
StringUtils.countMatches("abba", "a") = 2 復制代碼StringUtils.defaultIfEmpty 用于當字符串為空時,設(shè)置默認字符串
StringUtils.defaultIfEmpty("", "NULL") = "NULL" 復制代碼StringUtils.equalsIgnoreCase StringUtils.equals 用于判斷字符串是否相等,前者忽略大小寫
StringUtils.equals("abc", "abc") = true StringUtils.equalsIgnoreCase("abc", "ABC") = true // 推薦使用該方法比較字符串,如果使用 a.equals(b),必須確保 a!=null StringUtils.equals(null, "abc") = false 復制代碼StringUtils.join 字符串連接函數(shù),可以將字符串數(shù)組或集合,按照指定字符連接
// 碰到這種需要固定分隔符拼接的情況,可以使用該函數(shù),以免我們寫一大串函數(shù)循環(huán)拼接 StringUtils.join(["a", "b", "c"], ';') = "a;b;c" 復制代碼StringUtils.split 說完拼接,必定會有按照固定分隔符拆分的情況
// split 分隔后會忽略為空的字符 如果不能忽略的話 使用 splitPreserveAllTokens StringUtils.split("ab::ef", ":") = ["ab", "ef"] StringUtils.splitPreserveAllTokens("ab::ef",":")=["ab", "", "ef"] 復制代碼ArrayUtils
由于平常工作中習慣用集合代替數(shù)組對象,所以沒有經(jīng)常使用該類。
ArrayUtils.isEmpty 判斷數(shù)組是否為空
int[] a = new int[5]; ArrayUtils.isEmpty(a)=true 復制代碼DateFormatUtils
將時間按照指定格式輸出
DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss" //2018-05-27 16:32:51 復制代碼DateUtils
該類可以將時間按照格式解析成 Date 類型,還可以用于時間計算
DateUtils.parseDate 按照格式轉(zhuǎn)化成 Date 類型
DateUtils.parseDate("2018-05-27 16:32:51","yyyy-MM-dd HH:mm:ss") // 將字符串轉(zhuǎn)化成 Date 對象 復制代碼DateUtils.addDays addHours addMinutes 用于在指定 Date 加上相應時間,如想獲取當前時間20天后的日期,就就可以使用 DateUtils.addDays。
Date date=DateUtils.parseDate("2018-05-27 16:32:51","yyyy-MM-dd HH:mm:ss"); DateUtils.addDays(date,1);// date 為:2018-05-28 16:32:51 DateUtils.addHours(date,1)// date 為:2018-05-28 17:32:51 復制代碼DateUtils.truncate 按照指定時間類型截斷時間
Date date=DateUtils.parseDate("2018-05-27 16:32:51","yyyy-MM-dd HH:mm:ss"); DateUtils.truncate(date, Calendar.DATE);// 2018-05-27 00:00:00 DateUtils.truncate(date, Calendar.HOUR);// 2018-05-27 16:00:00 // 如果按照 Date 截斷時間,那么 Date 后面小時,分鐘等全部置為0,相當于舍棄了 Date 之后的時間。 復制代碼commons-io
Commons IO is a library of utilities to assist with developing IO functionality.
主要包含一些 IO 相關(guān)的工具類,可以簡化處理文件相關(guān)操作
FileUtils
文件操作相關(guān)工具類
FileUtils.copyDirectory || FileUtils.copyFile 拷貝文件夾或文件
// 拷貝文件 File fileA = new File("E:\\test\\test.txt"); File fileB = new File("E:\\test1\\test.txt"); FileUtils.copyFile(fileA,fileB); 復制代碼FileUtils.listFiles 獲取指定文件夾上所有文件
// 按照指定文件后綴如java,txt等去查找指定文件夾的文件 File directory = new File("E:\\test"); FileUtils.listFiles(directory, new String[]{"txt"}, false); 復制代碼FileUtils.readLines 讀取文件所有行
// 讀取指定文件所有行 不需要使用 while 循環(huán)讀取流了 List<String> lines = FileUtils.readLines(fileA) 復制代碼FileUtils.writeLines 有讀就存在寫,該方法可以一行行寫入文本
// 可以一行行寫入文本 List<String> lines = new ArrayList<>(); ..... FileUtils.writeLines(lines) 復制代碼IOUtils
Io 操作相關(guān),FileUtils 很多方法底層調(diào)用的是該類的方法
IOUtils.toString 將輸入流轉(zhuǎn)化為指定編碼格式的字符串,該方法非常使用與 http 異步回調(diào)的場景
// 獲取 http 異步回調(diào)的報文 String resMsg = IOUtils.toString(request.getInputStream()); 復制代碼IOUtils.toByteArray 將輸入流轉(zhuǎn)化為 byte 數(shù)組
// 獲取 http 異步回調(diào)的報文 byte[] b = IOUtils.toByteArray(request.getInputStream()); 復制代碼IOUtils.closeQuietly 關(guān)閉流,不需要在關(guān)閉前寫判斷和try-catch語句,commons-io 2.6 該方法已被 Deprecated , 官方推薦使用 JDK7 try-with-resources 關(guān)閉。注: 該方法如果在輸入流等 close 時,若產(chǎn)生 Exception ,異常將會被該方法吞掉。
FilenameUtils
在處理一些文件路徑問題時,如果我們代碼開發(fā)在 Windows 平臺,部署卻是在 Linux 平臺,這個時候我們必須考慮平臺分隔符問題。FilenameUtils 解決了平臺問題,不用擔心平臺系統(tǒng)問題,導致的bug。
FilenameUtils.getBaseName 獲取文件名字,去除前綴加擴展名 FilenameUtils.getExtension 獲取文件擴展名,去除路徑以及文件名 FilenameUtils.getName 獲取文件全名,去除路徑
FilenameUtils.getBaseName("E:\\test\\test.txt")//test FilenameUtils.getExtension("E:\\test\\test.txt")//txt FilenameUtils.getName("E:\\test\\test.txt")// test.txt 復制代碼FilenameUtils.concat 文件路徑拼接,不用擔心文件的分隔符
FilenameUtils.concat("E:\\test", "test.txt");//E:\test\test.txt 復制代碼commons-collections
The Java Collections Framework was a major addition in JDK 1.2. It added many powerful data structures that accelerate development of most significant Java applications. Since that time it has become the recognised standard for collection handling in Java
commons-collections 主要增強 java Collections 功能
CollectionUtils
為 Collection 實例提供工具方法
CollectionUtils.addAll 可以將數(shù)組,集合加入到指定集合,解決需要將數(shù)組加入到集合中情況
List<String> listA = new ArrayList<>(); listA.add("1"); listA.add("2"); listA.add("3"); String[] arrays = new String[]{"a", "b", "c"}; CollectionUtils.addAll(listA, arrays); 復制代碼CollectionUtils.isEmpty CollectionUtils.isNotEmpty 快捷判斷集合是否為空
總結(jié)
以上是生活随笔為你收集整理的常用的 Java 工具类之 Apache 全家桶使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘 pandas基础入门之操作
- 下一篇: java美元兑换,(Java实现) 美元