平常我们在日常的开发中会一些通用的功能封装成一些工具类,以便之后复用。但是有些常用功能,业界已经存在,我们无需造轮子,只需直接使用或借用它们的 Api ,构建我们的自己项目中工具类。这篇首先介绍平常用到的 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

字符串相关操作,扩展 String 相关方法,可以使我们方便处理字符串,满足我们的日常使用。

StringUtils.isBlank || StringUtils.isEmpty 判断字符串是否为空

// 两者都可以用于判断字符串是为空 isBlank 主要用于判断空白字符串 空字符("") 以及Null 而 isEmpty 主要用于判断空字符("")以及Null
StringUtils.isBlank(" ")       = true
StringUtils.isEmpty(" ")       = false
复制代码

StringUtils.countMatches 用于计数匹配上字符的数量

StringUtils.countMatches("abba", "a")   = 2
复制代码

StringUtils.defaultIfEmpty 用于当字符串为空时,设置默认字符串

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 字符串连接函数,可以将字符串数组或集合,按照指定字符连接

// 碰到这种需要固定分隔符拼接的情况,可以使用该函数,以免我们写一大串函数循环拼接
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

由于平常工作中习惯用集合代替数组对象,所以没有经常使用该类。

ArrayUtils.isEmpty 判断数组是否为空

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 按照格式转化成 Date 类型

DateUtils.parseDate("2018-05-27 16:32:51","yyyy-MM-dd HH:mm:ss") // 将字符串转化成 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 相关的工具类,可以简化处理文件相关操作

FileUtils

文件操作相关工具类

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 循环读取流了
List<String> lines = FileUtils.readLines(fileA)
复制代码

FileUtils.writeLines 有读就存在写,该方法可以一行行写入文本

// 可以一行行写入文本
List<String> lines = new ArrayList<>();
.....
FileUtils.writeLines(lines)
复制代码

IOUtils

Io 操作相关,FileUtils 很多方法底层调用的是该类的方法

IOUtils.toString 将输入流转化为指定编码格式的字符串,该方法非常使用与 http 异步回调的场景

// 获取 http 异步回调的报文
String resMsg = IOUtils.toString(request.getInputStream());
复制代码

IOUtils.toByteArray 将输入流转化为 byte 数组

// 获取 http 异步回调的报文
byte[] b = IOUtils.toByteArray(request.getInputStream());
复制代码

IOUtils.closeQuietly 关闭流,不需要在关闭前写判断和try-catch语句,commons-io 2.6 该方法已被 Deprecated , 官方推荐使用 JDK7 try-with-resources 关闭。注: 该方法如果在输入流等 close 时,若产生 Exception ,异常将会被该方法吞掉。

FilenameUtils

在处理一些文件路径问题时,如果我们代码开发在 Windows 平台,部署却是在 Linux 平台,这个时候我们必须考虑平台分隔符问题。FilenameUtils 解决了平台问题,不用担心平台系统问题,导致的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 可以将数组,集合加入到指定集合,解决需要将数组加入到集合中情况

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 快捷判断集合是否为空

常用的 Java 工具类之 Apache 全家桶使用相关推荐

  1. java工具类怎么写_常用的Java工具类——十六种

    常用的Java工具类--十六种 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选 ...

  2. (6)常用的Java工具类

    目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...

  3. 什么是java工具类_常用高效 Java 工具类总结

    一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...

  4. 精选16个最常用的Java 工具类,每一个都十分有用

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. clo ...

  5. 常用的java工具类

    StringUtils  这是象面包和奶油一样必须的通用语言库,这个实用工具类包括一些很早以前在String中未包含的重要方法. StringUtils.isEmpty( null )  && ...

  6. 「Java工具类」Apache的StringEscapeUtils转义工具类

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  7. 这些常用的java工具类你都知道吗?

    零基础自学java,点击了解:https://how2j.cn 1.json转换工具 1. package com.taotao.utils; 3. import java.util.List; 5. ...

  8. java xml最火的的工具_几种高效的Java工具类推荐

    本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...

  9. java 嵌入式 类型工具库_你常用的Java工具库都有哪些?

    Java命令行选项解析之Commons-CLI & Args4J & JCommander详细内容 Java调用Native API之JNA详细内容 Java执行SSH/SCP之JSc ...

最新文章

  1. php如何word转html格式文件,PHP将上传word文件,转化为Html格式,(多种转换方式)
  2. wd2003计算机考试,2015计算机一级MsOffice练习:Word2003
  3. libevent源码学习----io多路复用的封装和使用
  4. pycharm运行pytorch版pix2pix学习笔记
  5. Caffe常见神经网络结构——汇总与对比
  6. 电大计算机本科离散数学考试题,最新电大《离散数学》形考作业任务01-07网考试题及答案...
  7. java jdk官网下载地址
  8. 70部MAYA灯光材质渲染教程合集
  9. 如何使用cmd查看本机IP地址
  10. uniapp在移动端软键盘监听(弹出,收起),及影响定位布局的问题
  11. npm 报错 426 Upgrade Required
  12. RT_Thread操作系统配置环境EVN学习笔记
  13. 理县“有福童享”“牵手圆梦 陪伴成长”关爱折翼天使志愿服务活动
  14. PS新手教程!五分钟绘制一张半调效果的耐克体育海报
  15. firefox装在linux_在 Linux 中安装 Firefox
  16. SVN之enable-auto-props自动化属性
  17. 将撒娇进行到底的女人
  18. android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码... 1
  19. echarts饼状图环形中间动态文字
  20. redhat8.2安装过程出错显示DNF error: error in posttrans scriptlet inrpm package kmod-kvdo

热门文章

  1. mysql 数据库事务处理_Mysql事务处理问题 - mysql数据库栏目 - 自学php
  2. Java网络编程3---Socket-UDP编程
  3. nda协议_如何将NDA项目添加到您的投资组合
  4. 如何写好技术文章(看张鑫旭老师的直播总结
  5. 前端技术未来三年前瞻性思考
  6. 【2.0】SpringBoot连接MySql 8.0的url设置
  7. Dubbo原理与框架设计
  8. GO语言基础条件、跳转、Array和Slice
  9. 奥迪坚SVRM(Screen-Voice Recording Manager)录屏软件正式发布
  10. 8.2设备文件及磁盘分区