在 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
deleteDirectory: 删除文件夹
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 替换字符串
7. 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
来源: http://developer.51cto.com/art/201908/601492.htm