apache 常用類和方法

常用組件和類

  • org.apache
    • commons
      • beanutils
        • BeanUtils
        • ConvertUtils
      • collections
        • CollectionUtils
        • MapUtils
        • ListUtils
        • SetUtils
      • dbcp
      • fileupload
      • io
        • FilenameUtils
        • FileUtils
        • IOUtils
      • lang
        • ArrayUtils
        • StringUtils
        • BooleanUtils
        • time
          • DateFormatUtils
          • DateUtils
          • FastDateFormat
          • StopWatch
      • logging
      • net
        • ftp
          • FTPClient
      • pool
    • cxf
    • httpcomponents
      • httpclient
    • poi

org.apache.commons

org.apache.commons.beanutils.BeanUtils

//將相同名稱屬性值從源orig複製到目標dest(支持bean和map,支持部分類型自動轉換)
static void copyProperties(Object dest, Object orig)

//將源orig的name屬性值複製到目標dest
static void copyProperty(Object dest, String name, Object orig)

//將Map orig的屬性值複製到目標dest
static void populate(Object dest, Map<String,? extends Object> orig)

//將value值根據需要執行類型轉換再設置到dest的name屬性中
static void setProperty(Object dest, String name, Object value)

BeanUtils.copyProperties 性能非常低,可以用以下方式替換:

  1. springframework的BeanUtils
  2. cglib的BeanCopier
  3. Apache BeanUtils包的PropertyUtils
  1. org.springframework.beans.BeanUtils
//將相同名稱屬性值從source複製到target(不支持map,不支持類型轉換)
static void copyProperties(Object source, Object target)
  1. org.springframework.cglib.beans.BeanCopier
//指定拷貝的source類和target類以及是否使用類型轉換
static BeanCopier create(Class source, Class target, boolean useConverter)

//結合上一個方法使用,將相同名稱屬性值從source複製到target(不支持map,選擇使用類型轉換)
abstract void copy(Object source, Object target, Converter var1)

//補充 org.springframework.cglib.beans
//目標bean轉BeanMap
static BeanMap create(Object bean)

舉例:字符串轉Date

        BeanCopier copier = BeanCopier.create(User.class, User2.class, true);
        copier.copy(origUser, targetUser, new Converter() {
            @Override
            public Object convert(Object sourceValue, Class targetClass, Object o1) {
                if (sourceValue instanceof Date) {
                    Date sourceDate = (Date) sourceValue;
                    return DateFormatUtils.format(sourceDate, "yyyy-MM-dd HH:mm:ss");
                }
                return sourceValue;
            }
        });
  1. org.apache.commons.beanutils.PropertyUtils
//將相同名稱屬性值從source複製到target(支持map,不支持類型轉換)
static void copyProperties(final Object dest, final Object orig)

org.apache.commons.beanutils.ConvertUtils

//註冊轉換器針對目標類clazz
static void register(final Converter converter, final Class<?> clazz)

舉例:字符串轉Date

 ConvertUtils.register(new Converter() {
            @Override
            public Object convert(Class type, Object sourceValue) {
                try {
                    return  DateUtils.parseDate(sourceValue.toString(),"yyyy-MM-dd HH:mm:ss");
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }, Date.class);
//後調用拷貝方法
BeanUtils.copyProperties(destUser, sourceUser);

org.apache.commons.collections4.CollectionUtils

//將數組中的所有元素添加到給定集合
static <C> boolean addAll(Collection<C> collection, C... elements)

//如果coll2中元素都包含在coll1中就返回true
static boolean containsAll(Collection<?> coll1, Collection<?> coll2)

//檢查集合是否爲空,coll==null或者coll.size==0返回true
static boolean isEmpty(Collection<?> coll)

//檢查集合是否爲空,coll!=null並且coll.size>0返回true
static boolean isNotEmpty(Collection<?> coll)

//從集合中移除掉remove集合中包含的元素
static <E> Collection<E> removeAll(Collection<E> collection, Collection<?> remove)

//返回兩個集合都包含的元素集合
static <C> Collection<C> retainAll(Collection<C> collection, Collection<?> retain)

org.apache.commons.collections4.MapUtils

更多參考:https://blog.csdn.net/u012894692/article/details/82557843

//如果map爲null,返回null,否則返回map中k對應值
static <K> String getString(Map<? super K,?> map, K key)

//如果map==null返回0,否則返回map.size()
static int size(Map<?,?> map)

//返回一個同步map
static <K,V> Map<K,V> synchronizedMap(Map<K,V> map)

org.apache.commons.collections4.ListUtils

//判斷兩個集合是否包含相同的元素
static boolean isEqualList(Collection<?> list1, Collection<?> list2)

//從第一個列表中減去第二個列表中的所有元素,將結果放入一個新列表。
static <E> List<E>	subtract(List<E> list1, List<? extends E> list2)

//返回一個同步list
static <E> List<E>	synchronizedList(List<E> list)

//返回一個新集合,是兩個集合的並集
static <E> List<E>	union(List<? extends E> list1, List<? extends E> list2)

org.apache.commons.collections4.SetUtils

//返回一個hashSet
static <E> HashSet<E>	hashSet(E... items)

//返回一個同步set
static <E> Set<E>	synchronizedSet(Set<E> set)

//返回一個排序後的Set
static <E> Set<E>	orderedSet(Set<E> set)

org.apache.commons.io.FilenameUtils

Linux 下的分隔符:/
Windows 下的分隔符:\

//將文件名連接到基礎路徑
static String concat(String basePath, String fullFilenameToAdd)

//獲取文件的全路徑
static String	getFullPath(String filename)

//獲取文件的全路徑去掉最後的分隔符
static String	getFullPathNoEndSeparator(String filename)

//獲取文件路徑
static String	getPath(String filename)

//獲取文件路徑去掉最後的分隔符
static String	getPathNoEndSeparator(String filename)

//獲取文件名
static String	getName(String filename)

//完整文件名去除路徑和後綴後的文件名
static String	getBaseName(String filename)

//獲取文件路徑前綴
static String	getPrefix(String filename)

//獲取文件的後綴
static String	getExtension(String filename)

//是否是指定的後綴
static boolean	isExtension(String filename, String extension)

//後綴是否在指定的後綴數組中
static boolean	isExtension(String filename, String[] extensions)

//後綴是否在指定的後綴集合中
static boolean	isExtension(String filename, Collection<String> extensions)

//文件的全路徑去除後綴
static String	removeExtension(String filename)

//獲取當前系統格式化路徑(windowns:"\\",linux:"/")
static String	normalize(String filename)

//轉換分隔符爲當前系統分隔符(windowns:"\\",linux:"/")
static String	separatorsToSystem(String path)
FilenameUtils.concat("D:\\a\\b", "xx.txt");// D:\a\b\xx.txt

FilenameUtils.getFullPath("D:\\a\\b\\xx.txt");// D:\a\b\
FilenameUtils.getFullPathNoEndSeparator("D:\\a\\b\\xx.txt");// D:\a\b
FilenameUtils.getPath("D:\\a\\b\\xx.txt");// a\b\
FilenameUtils.getPathNoEndSeparator("D:\\a\\b\\xx.txt");// a\b

FilenameUtils.getName("D:\\a\\b\\xx.txt");// xx.txt
FilenameUtils.getBaseName("D:\\a\\b\\xx.txt");// xx

FilenameUtils.getPrefix("D:\\a\\b\\xx.txt");// D:\
FilenameUtils.getExtension("D:\\a\\b\\xx.txt");// txt

FilenameUtils.isExtension("D:\\a\\b\\xx.txt","txt");// true
FilenameUtils.isExtension("D:\\a\\b\\xx.txt",new String[]{"exe","txt","sql"});//true
FilenameUtils.isExtension("D:\\a\\b\\xx.txt",Arrays.asList(new String[]{"exe","txt","sql"}));// true
FilenameUtils.removeExtension("D:\\a\\b\\xx.txt");// D:\a\b\xx

FilenameUtils.normalize("D:\\a\\b\\xx.txt");// D:\a\b\xx.txt
FilenameUtils.separatorsToSystem("D:\\a\\b");// D:\a\b

org.apache.commons.io.FileUtils

//刪除目錄下的所有文件和文件夾
static void	cleanDirectory(File directory)

//將srcDir目錄下的文件和文件夾拷貝到destDir目錄,保留文件日期
static void	copyDirectory(File srcDir, File destDir)

//將srcDir目錄下的文件和文件夾拷貝到destDir目錄,控制是否保留文件日期
static void	copyDirectory(File srcDir, File destDir, boolean preserveFileDate)

//將srcDir目錄下的文件和文件夾過濾後拷貝到destDir目錄,保留文件日期
static void	copyDirectory(File srcDir, File destDir, FileFilter filter)

//將srcDir目錄下的文件和文件夾過濾後拷貝到destDir目錄,控制是否保留文件日期
static void	copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)

//將srcDir目錄最後一個文件夾及下的文件和文件夾過濾後拷貝到destDir目錄
static void	copyDirectoryToDirectory(File srcDir, File destDir)

//拷貝srcFile文件到destFile文件,保留文件日期
static void	copyFile(File srcFile, File destFile)

//拷貝srcFile文件到destFile文件,控制是否保留文件日期
static void	copyFile(File srcFile, File destFile, boolean preserveFileDate)

//拷貝input文件到output輸出流,返回拷貝字節大小
static long	copyFile(File input, OutputStream output)

//拷貝srcFile文件到destDir目錄下,保留文件日期
static void	copyFileToDirectory(File srcFile, File destDir)

//拷貝srcFile文件到destDir目錄下,控制是否保留文件日期
static void	copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate)

//將source輸入流拷貝到destination文件
static void	copyInputStreamToFile(InputStream source, File destination)

//拷貝src文件或者目錄到destDir目錄,保留文件日期
static void	copyToDirectory(File src, File destDir)

//拷貝多個文件到destDir目錄,保留每個文件的日期
static void	copyToDirectory(Iterable<File> srcs, File destDir)

//將source輸入流拷貝到destination文件
static void	copyToFile(InputStream source, File destination)

//刪除directory目錄
static void	deleteDirectory(File directory)

//刪除一個文件,不會拋出異常
static boolean	deleteQuietly(File file)

//directory目錄拼接上child目錄或者文件
static boolean	directoryContains(File directory, File child)

//強制刪除文件或者目錄
static void	forceDelete(File file)

//將srcDir目錄移到destDir目錄下
static void	moveDirectory(File srcDir, File destDir)

//移動文件,並重新命名
static void	moveFile(File srcFile, File destFile)

//移送srcFile文件到destDir目錄
static void	moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)

//移送srcFile文件或目錄到destDir目錄
static void	moveToDirectory(File src, File destDir, boolean createDestDir)

//獲取文件輸入流,file有問題時會拋出更詳細日誌
static FileInputStream	openInputStream(File file)

//獲取文件輸出流,file有問題時會拋出更詳細日誌
static FileOutputStream	openOutputStream(File file)

//把文件讀到字節數組中
static byte[]	readFileToByteArray(File file)

//逐行將文件內容讀取到字符串列表中。
static List<String>	readLines(File file, String encoding)

//返回文件或者目錄的大小(遞歸地計算一個目錄的所有文件的長度的總和),單位:KB
static long	sizeOf(File file)

//獲取指定文件或目錄大小(遞歸地計算一個目錄的所有文件的長度的總和),單位:KB
static BigInteger	sizeOfAsBigInteger(File file)

有疑問的方法示例:

File directory = new File("D:\\a\\b");
File file = new File("D:\\a\\b\\xx.txt");
File file1 = new File("D:\\a\\b\\xx1.txt");

FileUtils.cleanDirectory(directory);//D:\a\b\xx.txt目錄下 xx.txt被刪除
FileUtils.copyDirectory(directory,new File("D:\\a1"));//將D:\a\b下的xx.txt複製到了D:\a1
FileUtils.copyDirectoryToDirectory(directory,new File("D:\\a1"));//將b文件夾及xx.txt複製到了D:\a1
FileUtils.copyFile(file,file1);//xx.txt文件拷貝到了xx1.txt

org.apache.commons.io.IOUtils

//創建一個緩存輸入流
static BufferedInputStream	buffer(InputStream inputStream)

//創建一個緩存輸出流
static BufferedOutputStream	buffer(OutputStream outputStream)

//創建一個緩存輸入流
static BufferedReader	buffer(Reader reader)

//創建一個緩存輸出流
static BufferedWriter	buffer(Writer writer)

//關閉URL連接
static void	close(URLConnection conn)

//關閉流,會做非空判斷(類似流關閉都已過時,用try-with-resources語句)
static void	closeQuietly(InputStream input)

//拷貝InputStream 到OutputStream,返回拷貝字節數量
static int	copy(InputStream input, OutputStream output)

//指定輸入編碼拷貝input到output
static void	copy(InputStream input, Writer output, String inputEncoding)

//指定輸出編碼拷貝input到output
static void	copy(Reader input, OutputStream output, String outputEncoding)

//拷貝input到output
static int	copy(Reader input, Writer output)

//拷貝超過2GB的流文件input到output
static long	copyLarge(InputStream input, OutputStream output)

//拷貝超過2GB的流文件input到output
static long	copyLarge(Reader input, Writer output)

org.apache.commons.lang3.ArrayUtils

//在原數組中添加一個元素,返回一個新數組,xxx爲boolean、int、long等基礎類型
static xxx[]	add(boolean[] array, xxx element)

//在原數組中添加一個元素,返回一個新數組
static <T> T[]	add(T[] array, T element)

//在原數組中添加多個元素,返回一個新數組,xxx爲boolean、int、long等基礎類型
static xxx[]	addAll(xxx[] array1, xxx... array2)

//在原數組中添加多個元素,返回一個新數組
static <T> T[]	addAll(T[] array1, T... array2)

//克隆返回類型轉換結果並處理空值的數組。xxx爲boolean、int、long等基礎類型(深拷貝)
static xxx[]	clone(xxx[] array)

//克隆返回類型轉換結果並處理空值的數組。(深拷貝)
static <T> T[]	clone(T[] array)

//檢查objectToFind是否在數組中
static boolean	contains(Object[] array, Object objectToFind)

//array爲null返回0,否則返回array長度
static int	getLength(Object array)

//查找valueToFind在數組中第一次出現的索引,xxx爲boolean、int、long等基礎類型
static int	indexOf(xxx[] array, xxx valueToFind)

//從索引startIndex開始查找valueToFind在數組中第一次出現的索引,xxx爲boolean、int、long等基礎類型
static int	indexOf(xxx[] array, xxx valueToFind, int startIndex)

//查找valueToFind在數組中第一次出現的索引
static int	indexOf(Object[] array, Object objectToFind)

//從索引startIndex開始查找valueToFind在數組中第一次出現的索引
static int	indexOf(Object[] array, Object objectToFind, int startIndex)

//在數組指定索引位置添加多個元素,返回一個新數組,xxx爲boolean、int、long等基礎類型
static xxx[]	insert(int index, xxx[] array, xxx... values)

//在數組指定索引位置添加多個元素,返回一個新數組
static <T> T[]	insert(int index, T[] array, T... values)

//檢查數組是否是空的,null返回true,xxx爲boolean、int、long等基礎類型
static boolean	isEmpty(xxx[] array)

//檢查數組是否不是空的,null返回false,xxx爲boolean、int、long等基礎類型
static boolean	isNotEmpty(xxx[] array)

//檢查數組是否不是空的,null返回false
static <T> boolean	isNotEmpty(T[] array)

//判斷兩個數組長度是相同,null長度爲0
static boolean	isSameLength(boolean[] array1, boolean[] array2)

//判斷兩個數組類型是相同
static boolean	isSameType(Object array1, Object array2)

//此方法檢查提供的數組是否按自然順序排序(true之前爲false)
static boolean	isSorted(xxx[] array)

//valueToFind在數組中最後出現的索引
static int	lastIndexOf(xxx[] array, xxx valueToFind)

//valueToFind在數組中最後出現的索引
static int	lastIndexOf(Object[] array, Object objectToFind)

//從索引startIndex開始valueToFind在數組中最後出現的索引
static int	lastIndexOf(Object[] array, Object objectToFind, int startIndex)

//array爲null就返回一個空數組,否則返回array
static xxx[]	nullToEmpty(xxx[] array)

//array爲null就返回一個空數組,否則返回array
static Object[]	nullToEmpty(Object[] array)

//array爲null就返回一個空type類型數組,否則返回array
static <T> T[]	nullToEmpty(T[] array, Class<T[]> type)

//數組移除指定索引元素,返回一個新數組
static xxx[]	remove(xxx[] array, int index)

//數組移除指定索引元素,返回一個新數組
static <T> T[]	remove(T[] array, int index)

//數組移除多個指定索引元素,返回一個新數組
static xxx[]	removeAll(xxx[] array, int... indices)

//數組移除多個指定索引元素,返回一個新數組
static <T> T[]	removeAll(T[] array, int... indices)

//數組移除所有的element元素,返回一個新數組
static xxx[]	removeAllOccurences(xxx[] array, xxx element)

//數組移除所有的element元素,返回一個新數組
static <T> T[]	removeAllOccurences(T[] array, T element)

//數組移除第一個element元素,返回一個新數組
static xxx[]	removeElement(xxx[] array, xxx element)

//數組移除第一個element元素,返回一個新數組
static <T> T[]	removeElement(T[] array, Object element)

//數組移除多個element元素,返回一個新數組
static boolean[]	removeElements(boolean[] array, boolean... values)

//數組移除多個element元素,返回一個新數組
static <T> T[]	removeElements(T[] array, T... values)

//反轉給定數組的順序
static void	reverse(xxx[] array)

//反轉給定數組指定索引範圍內元素的順序
static void	reverse(xxx[] array, int startIndexInclusive, int endIndexExclusive)

//反轉給定數組的順序
static void	reverse(Object[] array)

//反轉給定數組指定索引範圍內元素的順序
static void	reverse(Object[] array, int startIndexInclusive, int endIndexExclusive)

//將數組按照指定索引範圍截取出一個新數組
static xxx[]	subarray(xxx[] array, int startIndexInclusive, int endIndexExclusive)

//將數組按照指定索引範圍截取出一個新數組
static <T> T[]	subarray(T[] array, int startIndexInclusive, int endIndexExclusive)

//交換指定索引的兩個元素
static void	swap(xxx[] array, int offset1, int offset2)

//交換指定索引的兩個元素
static void	swap(Object[] array, int offset1, int offset2)

//轉換成map
static Map<Object,Object>	toMap(Object[] array)

//轉換成包裝類型
static Xxx[]	toObject(xxx[] array)

//轉換成基礎類型
static xxx[]	toPrimitive(Xxx[] array)

//轉換成基礎類型,null指用默認值valueForNull替換
static xxx[]	toPrimitive(Xxx[] array, xxx valueForNull)

//從包裝類型數組創建基礎類型數組。
static Object	toPrimitive(Object array)

//將數組輸出爲字符串,將null視爲空數組。
static String	toString(Object array)

//返回一個數組,該數組包含參數數組中每個元素的字符串表示形式
static String[]	toStringArray(Object[] array)

//返回一個數組,該數組包含處理空元素的參數數組中每個元素的字符串表示形式,null值用valueForNullElements替換
static String[]	toStringArray(Object[] array, String valueForNullElements)

org.apache.commons.lang3.StringUtils

//檢查seq是否包含searchSeq,處理空值
static boolean	contains(CharSequence seq, CharSequence searchSeq)

//檢查cs是否包含給定數組searchCharSequences中的任何y元素。
static boolean	containsAny(CharSequence cs, CharSequence... searchCharSequences)

//檢查seq是否包含searchSeq,忽略大小寫,處理空值
static boolean	containsIgnoreCase(CharSequence str, CharSequence searchStr)

//返回傳入字符串,如果字符串爲null,則返回空字符串(“”)
static String	defaultString(String str)

//返回傳入字符串,如果字符串爲null,則返回defaultStr
static String	defaultString(String str, String defaultStr)

//檢查字符序列是否以指定的後綴結尾。
static boolean	endsWith(CharSequence str, CharSequence suffix)

//檢查字符序列是否以提供的數組中任何後綴結尾,區分大小寫
static boolean	endsWithAny(CharSequence sequence, CharSequence... searchStrings)

//檢查字符序列是否以指定的後綴結尾,忽略大小寫
static boolean	endsWithIgnoreCase(CharSequence str, CharSequence suffix)

//比較兩個字符序列,如果它們表示相等的字符序列,則返回true。
static boolean	equals(CharSequence cs1, CharSequence cs2)

//查找數組中是否有和指定字符序列相等的字符序列
static boolean	equalsAny(CharSequence string, CharSequence... searchStrings)

//比較兩個字符序列,如果它們表示相等的字符序列,則返回true,忽略大小寫
static boolean	equalsIgnoreCase(CharSequence cs1, CharSequence cs2)

//查找數組中是否有和指定字符序列相等的字符序列,忽略大小寫
static boolean	equalsAnyIgnoreCase(CharSequence string, CharSequence... searchStrings)

//查找seq中的第一個索引,處理空值。
static int	indexOf(CharSequence seq, CharSequence searchSeq)

//從startPos開始查找seq中的第一個索引,處理空值。
static int	indexOf(CharSequence seq, CharSequence searchSeq, int startPos)

//查找seq中的第一個索引,處理空值。忽略大小寫
static int	indexOfIgnoreCase(CharSequence str, CharSequence searchStr)

//從startPos開始查找seq中的第一個索引,處理空值。忽略大小寫
indexOfIgnoreCase(CharSequence str, CharSequence searchStr, int startPos)

//檢查字符序列是否爲空(“”)、null或者空格
static boolean	isBlank(CharSequence cs)

//檢查字符序列是否爲空(“”)、null
static boolean	isEmpty(CharSequence cs)

//檢查字符序列數組中是否沒有爲空(“”)、null或者空格
static boolean	isNoneBlank(CharSequence... css)

//檢查字符序列數組中是否沒有爲空(“”)、null
static boolean	isNoneEmpty(CharSequence... css)

//檢查字符序列是否不爲空(“”)、null或者空格
static boolean	isNotBlank(CharSequence cs)

//檢查字符序列是否不爲空(“”)、null
static boolean	isNotEmpty(CharSequence cs)

//將separator拼接在數組元素之間
static String	join(xxx[] array, char separator)

//將separator拼接在數組元素之間
static String	join(Object[] array, String separator)

//將separator拼接在數組元素之間
static String	joinWith(String separator, Object... objects)

//返回指定字符最後一次出現的序列內的索引。
static int	lastIndexOf(CharSequence seq, CharSequence searchSeq)

//返回指定字符最後一次出現的序列內的索引。忽略大小寫
static int	lastIndexOfIgnoreCase(CharSequence str, CharSequence searchStr)

//獲取cs長度,如果cs爲空,則爲0。
static int	length(CharSequence cs)

//轉換爲小寫
static String	lowerCase(String str)

//從源字符串中刪除子字符串的所有出現項。
static String	remove(String str, String remove)

//從源字符串中刪除子字符串的所有出現項。忽略大小寫
static String	removeIgnoreCase(String str, String remove)

//替換searchString中所有text爲replacement
static String	replace(String text, String searchString, String replacement)

//替換searchString中所有text爲replacement,忽略大小寫
static String	replaceIgnoreCase(String text, String searchString, String replacement)

//按照separatorChars分隔符將文本拆分爲一個數組
static String[]	split(String str, String separatorChars)

//檢查字符序列是否以指定的前綴開頭。
static boolean	startsWith(CharSequence str, CharSequence prefix)

//從字符串的開始和結束處刪除空隔
static String	strip(String str)

//從字符串的開始和結束處刪除stripChars
static String	strip(String str, String stripChars)

//從字符串的結束處刪除stripChars
static String	stripEnd(String str, String stripChars)

//從字符串的開始處刪除stripChars
static String	stripStart(String str, String stripChars)

//從指定的字符串中獲取避免異常的子字符串。
static String	substring(String str, int start)

//從指定的字符串中獲取避免異常的子字符串。
static String	substring(String str, int start, int end)

//獲取第一次出現分隔符後的子字符串。
static String	substringAfter(String str, String separator)

//獲取嵌套在兩個字符串之間的字符串
static String	substringBetween(String str, String open, String close)

//交換字符串的大小寫,將大寫更改爲小寫,小寫更改爲大寫。
static String	swapCase(String str)

//從該字符串的兩端刪除控制字符(char<=32),str爲null則返回null
static String	trim(String str)

//將字符串轉換爲大寫。
static String	upperCase(String str)

//返回char數組的字符串表示形式或爲null
static String	valueOf(char[] value)

org.apache.commons.lang3.BooleanUtils

//檢查一個Boolean 值是否是false,null也返回false
static boolean	isFalse(Boolean bool)

//檢查一個Boolean 值是否是true,null也返回true
static boolean	isTrue(Boolean bool)

//Boolean轉boolean,null返回false
static boolean	toBoolean(Boolean bool)

//將字符串轉換爲布爾值(優化性能)
static boolean	toBoolean(String str)

//將字符串轉換爲布爾值
static Boolean	toBooleanObject(String str)

org.apache.commons.lang3.time.DateFormatUtils

//將日曆格式化爲特定模式
static String	format(Calendar calendar, String pattern)

//將date或者time格式化爲特定模式
static String	format(Date date, String pattern)

//將時間戳格式化爲特定模式
static String	format(long millis, String pattern)

org.apache.commons.lang3.time.DateUtils

//一天換算成毫秒:86400000L
static long	MILLIS_PER_DAY

//一個小時換算成毫秒:3600000L
static long	MILLIS_PER_HOUR

//一分鐘換算成毫秒:60000
static long	MILLIS_PER_MINUTE

//一秒鐘換算成毫秒:1000
static long	MILLIS_PER_SECOND

static Date	addYears(Date date, int amount)
static Date	addMonths(Date date, int amount)
static Date	addDays(Date date, int amount)
static Date	addHours(Date date, int amount)
static Date	addMinutes(Date date, int amount)
static Date	addSeconds(Date date, int amount)
static Date	addWeeks(Date date, int amount)

//從給定字段開始“向上”格式化日期
static Calendar	ceiling(Calendar date, int field)

//從給定字段開始“向上”格式化日期
static Date	ceiling(Date date, int field)

//fragment是Calendar時間常量字段,Xxx是Days、Hours、Minutes等,返回結果如:Days 返回今天是對應的本年或者本月第幾天
static long	getFragmentInXxx(Calendar calendar, int fragment)

//fragment是Calendar時間常量字段,Xxx是Days、Hours、Minutes等,返回結果如:Days 返回今天是對應的本年或者本月第幾天
static long	getFragmentInXxx(Date date, int fragment)

//對時間設置對應字段,Xxx是Days、Hours、Minutes等
static Date	setXxx(Date date, int amount)

//判斷兩個日曆是否是同一天。忽略time
static boolean	isSameDay(Calendar cal1, Calendar cal2)

//判斷兩個日期是否是同一天。忽略time
static boolean	isSameDay(Date date1, Date date2)

//解析器數組中依次嘗試解析表示日期的字符串
static Date	parseDate(String str, String... parsePatterns)

//對日期時間進行四捨五入。filed指定取整的字段
static Calendar	round(Calendar date, int field)

//對日期時間進行四捨五入。filed指定取整的字段
static Date	round(Date date, int field)

//date轉Calendar	
static Calendar	toCalendar(Date date)

//從給定字段開始格式化截取日期
static Calendar	truncate(Calendar date, int field)

//從給定字段開始格式化截取日期
static Date	truncate(Date date, int field)

//從給定字段開始格式化截取日期,然後比較
static int	truncatedCompareTo(Calendar cal1, Calendar cal2, int field)

//從給定字段開始格式化截取日期,然後比較
static int	truncatedCompareTo(Date date1, Date date2, int field)

//從給定字段開始格式化截取日期,然後比較是否相等
static boolean	truncatedEquals(Calendar cal1, Calendar cal2, int field)

//從給定字段開始格式化截取日期,然後比較是否相等
static boolean	truncatedEquals(Date date1, Date date2, int field)

疑問示範:

static Date ceiling(Date date, int field)
從給定字段開始“向上”格式化日期

// 當前時間爲'2017-06-04 01:02:31',則執行以下代碼
DateUtils.ceiling(new Date(), Calendar.YEAR); // 2018-01-01 00:00:00
DateUtils.ceiling(new Date(), Calendar.MONTH); // 2017-07-01 00:00:00
DateUtils.ceiling(new Date(), Calendar.HOUR_OF_DAY); // 2017-06-04 02:00:00
DateUtils.ceiling(new Date(), Calendar.DAY_OF_MONTH); // 2017-06-05 00:00:00
DateUtils.ceiling(new Date(), Calendar.HOUR); // 2017-06-04 02:00:00
DateUtils.ceiling(new Date(), Calendar.MINUTE); // 2017-06-04 01:03:00
DateUtils.ceiling(new Date(), Calendar.SECOND); // 2017-06-04 01:02:32

long getFragmentInDays(Date date, int fragment)
fragment是Calendar時間常量字段,返回今天是對應的本年或者本月第幾天

注意:小時必須用24小時制的,即Calendar.HOUR_OF_DAY,而不能用Calendar.HOUR字段。

// 當前時間爲'2017-02-04 01:12:31',則執行以下代碼
DateUtils.getFragmentInDays(new Date(), Calendar.YEAR); // 35
DateUtils.getFragmentInDays(new Date(), Calendar.MONTH); // 4

static Date round(Date date, int field)
對日期時間進行四捨五入。filed指定取整的字段,可以取的值爲

  • Calendar.SECOND
  • Calendar.MINUTE
  • Calendar.HOUR_OF_DAY
  • Calendar.DAY_OF_MONTH
  • Calendar.MONTH
  • Calendar.YEAR
// 當前時間爲'2017-06-04 00:44:41',則執行以下代碼
DateUtils.round(new Date(), Calendar.YEAR); // 2017-01-01 00:00:00
DateUtils.round(new Date(), Calendar.MONTH); // 2017-06-01 00:00:00
DateUtils.round(new Date(), Calendar.HOUR_OF_DAY); // 2017-06-04 01:00:00
DateUtils.round(new Date(), Calendar.DAY_OF_MONTH); // 2017-06-04 00:00:00
DateUtils.round(new Date(), Calendar.HOUR); // 2017-06-04 01:00:00
DateUtils.round(new Date(), Calendar.MINUTE); // 2017-06-04 00:45:00
DateUtils.round(new Date(), Calendar.SECOND); // 2017-06-04 00:44:43

static Date truncate(Date date, int field)
從給定字段開始格式化截取日期。對一個時間對象的某個字段進行截斷。

// 當前時間爲'2017-06-04 00:56:05',則執行以下代碼
DateUtils.truncate(new Date(), Calendar.YEAR); // 2017-01-01 00:00:00
DateUtils.truncate(new Date(), Calendar.MONTH); // 2017-06-01 00:00:00
DateUtils.truncate(new Date(), Calendar.HOUR_OF_DAY); // 2017-06-04 00:00:00
DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH); // 2017-06-04 00:00:00
DateUtils.truncate(new Date(), Calendar.HOUR); // 2017-06-04 00:00:00
DateUtils.truncate(new Date(), Calendar.MINUTE); // 2017-06-04 00:56:00
DateUtils.truncate(new Date(), Calendar.SECOND); // 2017-06-04 00:56:05

org.apache.commons.lang3.time.FastDateFormat

FastDateFormat是一個快速且線程安全的時間操作類,它完全可以替代SimpleDateFromat。因爲是線程安全的,所以你可以把它作爲一個類的靜態字段使用。構造方法爲protected,不允許直接構造它的對象,可以通過工廠方法獲取。FastDateFormat之所以是線程安全的,是因爲這個類是無狀態的:內部的成員在構造時就完成了初始化,並在對象存活期,不提供任何API供外界修改他們。

常用方式:

private static final FastDateFormat DATE_FORMATTER = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
//格式化calendar對象
String	format(Calendar calendar)

//格式化date對象
String	format(Date date)

//格式化時間戳
String	format(long millis)

//獲取在默認時區和區域設置中使用指定樣式的日期格式化程序實例
static FastDateFormat	getDateInstance(int style)

//獲取在默認時區和區域設置中使用指定樣式的日期和時刻格式化程序實例
static FastDateFormat	getDateTimeInstance(int dateStyle, int timeStyle)

//獲取在默認區域設置中使用默認模式的格式化程序實例。
static FastDateFormat	getInstance()

//根據格式獲取在默認區域設置中使用默認模式的格式化程序實例。
static FastDateFormat	getInstance(String pattern)

//獲取在默認時區和區域設置中使用指定樣式的時刻格式化程序實例。
static FastDateFormat	getTimeInstance(int style)

//字符串解析爲date
Date	parse(String source)

org.apache.commons.lang3.time.StopWatch

StopWatch是一個方便的計時器。

//提供一個秒錶並啓動
static StopWatch	createStarted()

//開始計時
void	start()

//停止計時
void	stop()

//重置計時
void	reset()

//暫停計時
void	suspend()

//繼續計時
void	resume()

//獲取消耗的納秒數
long	getNanoTime()

//獲取消耗的毫秒數
long	getTime()

//獲取開始的毫秒數
long	getStartTime()

//是否開始
boolean	isStarted()

//是否暫停
boolean	isSuspended()

//是否停止
boolean	isStopped()

使用示例

StopWatch stopWatch = new StopWatch();
stopWatch.start();
...
stopWatch.stop();
System.out.println(stopWatch.getTime());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章