在青铜时代群里看到读者朋友们在讨论 Java 最常用的工具类,我觉得大家推荐的确实都挺常见的,我自己用的频率也蛮高的。恰好我在 programcreek 上看到过一篇类似的文章,就想着梳理一下分享给大家。

在 Java 中,工具类通常用来定义一组执行通用操作的方法。本篇文章将会向大家展示 8 个工具类以及它们最常用的方法,类的排名和方法的排名均来自可靠的数据,从 GitHub 上最受欢迎的 50000 个开源 Java 项目中精心挑选。

为了方便大家的理解,我会在介绍每个类的方法时写一段小 Demo,这样大家就能知道每个方法该怎么用。放心吧,方法是干嘛的我也不会保密的。

1)IOUtils

org.apache.commons.io.IOUtils,操作 IO 流的工具类,下面是其常用的方法。

closeQuietly(),关闭 IO 流,并且忽略 null 值和异常。

copy(),将字节从输入流复制到输出流。

toByteArray(),以 byte[] 的形式获取输入流中的内容。

write(),将字符或者字节写入输出流中。

toInputStream(),将指定的字符转成输入流。

readLines(),从输入流中一行一行地读取,并按照指定的字符编码返回字符串列表。

copyLarge(),从输入流中复制内容到输出流,超过 2GB。

readFully(),把输入流中的内容读入到字节数组中。

2)FileUtils

org.apache.commons.io.FileUtils,操作文件或者目录的工具类,下面是其常用的方法。

deleteDirectory(),删除目录。

readFileToString(),把文件的内容读入到字符串中。

deleteQuietly(),删除文件,但不抛出异常。

copyFile(),把文件复制到一个新的位置。

writeStringToFile(),把字符串写入到文件。

forceMkdir(),强制创建目录,包括任何必需但不存在的父目录。

write(),把字符或者字节写入到文件。

listFiles(),列出指定目录下的所有文件。

copyDirectory(),将目录下的所有子目录及文件复制到新的目录。

forceDelete(),强制删除文件或者目录及其所有子目录和文件。

3)StringUtils

org.apache.commons.lang3.StringUtils,操作字符串的工具类,并且是 null 安全的,下面是其常用的方法。

isBlank(),检查字符是否为空字符串””,或者 null,或者空格。

检查结果如下所示。

isNotBlank(),与 isBlank() 检查的结果相反。

isEmpty(),检查字符是否为空字符串””,或者 null;和 isBlank() 不同,不包括空格的检查。

检查结果如下所示。

isNotEmpty(),与 isEmpty() 检查的结果相反。

join(),将多个元素连接成一个字符串。

equals(),比较两个字符序列是否相等。

split(),把字符串拆分为数组,拆分符为空白字符。

replace(),替换另一个字符串中所有出现的字符串。

4)FilenameUtils

org.apache.commons.io.FilenameUtils,操作文件名或者路径的工具类,下面是其常用的方法。

getExtension(),获取文件的扩展名。

getBaseName(),获取单纯的文件名或者路径名,文件时去掉路径和扩展名;路径时去掉父级路径。

getName(),如果是文件时,获取文件名和后缀,去掉路径;如果是路径时,去掉父级路径。

concat(),将路径和文件名连接在一起。

wildcardMatch(),检查文件名是否匹配指定的格式。

separatorsToUnix(),将所有分隔符转换为正斜杠的 Unix 分隔符。

getFullPath(),获取文件的完整路径。

5)ArrayUtils

org.apache.commons.lang3.ArrayUtils,操作数组的工具类,下面是其常用的方法。

contains(),检查数组中是否包含某个值。

addAll(),将所有元素添加到一个数组中。

clone(),浅拷贝一个数组。

isEmpty(),检查数组是否为 null 或者没有元素。

add(),在数组中添加一个新的元素,原数组不变。

subarray(),根据起始下标和结束下标截取一个子数组。

indexOf(),找出指定数组的下标。

6)DigestUtils

org.apache.commons.codec.digest.DigestUtils,加密的工具类,下面是其常用的方法。

md5Hex(),计算字符串的 MD5 摘要,并返回 32 位的十六进制字符。

md5(),计算字符串的 MD5 摘要,并返回 16 个元素的字节数组。

7)StringEscapeUtils

org.apache.commons.text.StringEscapeUtils,字符串的转义和反转义工具类,下面是其常用的方法。

unescapeHtml4(),反转义 HTML。

escapeHtml4(),转义 HTML。

escapeJava(),转义 Java。

unescapeJava()

8)BeanUtils

大多数 Java 开发人员习惯于创建 getter/setter 的JavaBean,然后通过调用相应的 getXxx 和 setXxx 方法访问对应字段。但在某些情况下,需要动态访问 Java 对象的属性,org.apache.commons.beanutils.BeanUtils 就派上用场了。

copyProperties(),拷贝所有属性

其中 UserDTO 类的源码如下所示。

其中 EUser 类的源码如下所示。

其中 DateStringConverter 类的源码如下所示。

getProperty(),返回 bean 指定的属性值。

setProperty(),设置 bean 指定的属性值。

编辑整理 丨李嘉琪

java开源框架jpeege,隆重向你推荐这 8 个开源 Java 类库相关推荐

  1. guns 最新开源框架企业版下载_国内比较火的5款Java微服务开源项目

    本文介绍国内比较火的5款Java微服务开源项目,pig是基于Spring Cloud.OAuth2.0.Vue的前后端分离的系统. 通用RBAC权限设计及其数据权限和分库分表 支持服务限流.动态路由. ...

  2. java—三大框架详解,其发展过程及掌握的Java技术慨括

    Struts.Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案.但你是否知道,这些知名框架最初是怎样产生的? 我们知道,传统的Java W ...

  3. Java日志框架-logback的介绍及配置使用方法(纯Java工程)

    说明:内容估计有些旧,2011年的,但是大体意思应该没多大变化,最新的配置可以参考官方文档. 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分 ...

  4. 一种Java Spring框架里将配置文件里定义的值注入到Java变量的简单办法

    假设我在classpath下的application.properties里定义了一些配置: 我想让这些配置自动注入到我Java代码里某个变量中去.最简单的方式就是使用注解@PropertySourc ...

  5. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  6. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  7. 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  8. 联邦学习开源框架方案选型

    无知者:[联邦学习开源框架]FedLab - 加速FL算法验证 联邦学习开源框架FedLab相关 FATE 单位:微众银行 github: https://github.com/FederatedAI ...

  9. 深度学习——你需要了解的八大开源框架

    深度学习--你需要了解的八大开源框架 2016-08-05 19:18 Blake 0条评论 深度学习八大开源框架 导读:深度学习(Deep Learning)是机器学习中一种基于对数据进行表征学习的 ...

最新文章

  1. 全球最厉害的 14 位程序员,请收下我的膝盖
  2. linux nas解决方案_阿里产品总监:四大 Linux 支持的 NAS 解决方案
  3. jasmine spyOn的单步调试
  4. bzoj2132: 圈地计划
  5. 设计模式-15-建造者模式
  6. python里order什么意思_python中OrderedDict的使用方法详解
  7. 小程序引入的echarts过大如何解决_小程序如何解决社区团购的痛点
  8. Delphi中destroy, free, freeAndNil, release用法和区别
  9. 【浙江大学PAT真题练习乙级】1005 继续(3n+1)猜想 (25分) 真题解析
  10. SVN MKACTIVITY
  11. ubuntu中非常好用的PDF软件—okular
  12. 2.(leaflet篇)leaflet加载接入百度地图
  13. Tikhonov regularization 吉洪诺夫正则化(L2正则化)
  14. Gary Marcus:因果熵理论的荒诞和认知科学带给AI的11个启示 | 文末赠书
  15. 虚幻引擎UE4背包系统(如何制作可拖动(Drag and Drop)的背包(Scrollbox))
  16. 几何学在计算机中的应用,探析坐标几何的应用意义及其在计算机中的实现
  17. JAVA获取字符串首字拼音和全拼
  18. 靶机渗透(一)——bulldog2
  19. 分享调试SI4432的一些小经验
  20. PHP PDF内容识别 抓取信息 方法

热门文章

  1. css魔法 真名,CSS魔法(二)
  2. 布尔教育mysql优化_布尔教育-资源
  3. 老农解决猫狗鱼的问题(黑马基础习题)
  4. Summary of the monthly meeting in January and February
  5. GIS 之 地图数据的存储
  6. 开启Maven使用之路
  7. 逃脱“黑天鹅”魔咒:荣耀逆势增长背后的“反脆弱”之力
  8. 北理计算机学硕保研,2019计算机保研夏令营经验-上科大、北理、北航、中科院计算所夏令营...
  9. 虚拟服务器添加用户白名单,apache配置黑名单和白名单及账户权限控制
  10. 用Python实现喷墨打印机定期清洗喷头