在 Java 中, 工具类定义了一组公共方法, 这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类. 以下工具类, 方法按使用流行度排名, 参考数据来源于 GitHub 上随机选取的 5 万个开源项目源码.
01 org.apache.commons.io.IOUtils
1 closeQuietly: 关闭一个 IO 流, socket, 或者 selector 且不抛出异常, 通常放在 finally 块
2 toString: 转换 IO 流, Uri, byte[]为 String
3 copy:IO 流数据复制, 从输入流写到输出流中, 最大支持 2GB
4 toByteArray: 从输入流, URI 获取 byte[]
5 write: 把字节. 字符等写入输出流
6 toInputStream: 把字符转换为输入流
7 readLines: 从输入流中读取多行数据, 返回 List<String>
8copyLarge: 同 copy, 支持 2GB 以上数据的复制
9 lineIterator: 从输入流返回一个迭代器, 根据参数要求读取的数据量, 全部读取, 如果数据不够, 则失败
02 org.apache.commons.io.FileUtils
1 deleteDirectory: 删除文件夹
2 readFileToString: 以字符形式读取文件内容
3 deleteQueitly: 删除文件或文件夹且不会抛出异常
4 copyFile: 复制文件
5 writeStringToFile: 把字符写到目标文件, 如果文件不存在, 则创建
6 forceMkdir: 强制创建文件夹, 如果该文件夹父级目录不存在, 则创建父级
7 write: 把字符写到指定文件中
8 listFiles: 列举某个目录下的文件(根据过滤器)
9 copyDirectory: 复制文件夹
10 forceDelete: 强制删除文件
03 org.apache.commons.lang.StringUtils
1 isBlank: 字符串是否为空 (trim 后判断)
2 isEmpty: 字符串是否为空 (不 trim 并判断)
3 equals: 字符串是否相等
4 join: 合并数组为单一字符串, 可传分隔符
5 split: 分割字符串 EMPTY: 返回空字符串
6 trimToNull:trim 后为空字符串则转换为 null
7 replace: 替换字符串
04 org.apache.http.util.EntityUtils
1 toString: 把 Entity 转换为字符串
2 consume: 确保 Entity 中的内容全部被消费. 可以看到源码里又一次消费了 Entity 的内容, 假如用户没有消费, 那调用 Entity 时候将会把它消费掉
3 toByteArray: 把 Entity 转换为字节流
4 consumeQuietly: 和 consume 一样, 但不抛异常
5 getContentCharset: 获取内容的编码
05 org.apache.commons.lang3.StringUtils
1 isBlank: 字符串是否为空 (trim 后判断)
2 isEmpty: 字符串是否为空 (不 trim 并判断)
3 equals: 字符串是否相等
4 join: 合并数组为单一字符串, 可传分隔符
5 split: 分割字符串
6 EMPTY: 返回空字符串
7 replace: 替换字符串
8 capitalize: 首字符大写
06 org.apache.commons.io.FilenameUtils
1 getExtension: 返回文件后缀名
2 getBaseName: 返回文件名, 不包含后缀名
3 getName: 返回文件全名
4 concat: 按命令行风格组合文件路径(详见方法注释)
5 removeExtension: 删除后缀名
6 normalize: 使路径正常化
7 wildcardMatch: 匹配通配符
8 seperatorToUnix: 路径分隔符改成 unix 系统格式的, 即 /
9 getFullPath: 获取文件路径, 不包括文件名
10 isExtension: 检查文件后缀名是不是传入参数 (List) 中的一个
07 org.springframework.util.StringUtils
1 hasText: 检查字符串中是否包含文本
2 hasLength: 检测字符串是否长度大于 0
3 isEmpty: 检测字符串是否为空(若传入为对象, 则判断对象是否为 null)
4 commaDelimitedStringToArray: 逗号分隔的 String 转换为数组
5 collectionToDelimitedString: 把集合转为 CSV 格式字符串 replace 替换字符串
6 delimitedListToStringArray: 相当于 split
7 uncapitalize: 首字母小写
8 collectionToDelimitedCommaString: 把集合转为 CSV 格式字符串
9 tokenizeToStringArray: 和 split 基本一样, 但能自动去掉空白的单词
09 org.apache.commons.lang.ArrayUtils
1 contains: 是否包含某字符串
2 addAll: 添加整个数组
3 clone: 克隆一个数组
4 isEmpty: 是否空数组
5 add: 向数组添加元素
6 subarray: 截取数组
7 indexOf: 查找某个元素的下标
8 isEquals: 比较数组是否相等
9 toObject: 基础类型数据数组转换为对应的 Object 数组
09 org.apache.commons.lang.StringEscapeUtils
参考 15:org.apache.commons.lang3.StringEscapeUtils
10 org.apache.http.client.utils.URLEncodedUtils
1 format: 格式化参数, 返回一个 HTTP POST 或者 HTTP PUT 可用 application/x-www-form-urlencoded 字符串
2 parse: 把 String 或者 URI 等转换为 List
11 org.apache.commons.codec.digest.DigestUtils
1 md5Hex:MD5 加密, 返回 32 位字符串
2 sha1Hex:SHA-1 加密
3 sha256Hex:SHA-256 加密
4 sha512Hex:SHA-512 加密
5 md5:MD5 加密, 返回 16 位字符串
12 org.apache.commons.collections.CollectionUtils
1 isEmpty: 是否为空
2 select: 根据条件筛选集合元素
3 transform: 根据指定方法处理集合元素, 类似
4 List 的 map()filter: 过滤元素, 雷瑟 List 的 filter()
5 find: 基本和 select 一样
6 collect: 和 transform 差不多一样, 但是返回新数组
7 forAllDo: 调用每个元素的指定方法
8 isEqualCollection: 判断两个集合是否一致
13 org.apache.commons.lang3.ArrayUtils
1 contains: 是否包含某个字符串
2 addAll: 添加整个数组
3 clone: 克隆一个数组
4 isEmpty: 是否空数组
5 add: 向数组添加元素
6 subarray: 截取数组
7 indexOf: 查找某个元素的下标
8 isEquals: 比较数组是否相等
9 toObject: 基础类型数据数组转换为对应的 Object 数组
14 org.apache.commons.beanutils.PropertyUtils
1 getProperty: 获取对象属性值
2 setProperty: 设置对象属性值
3 getPropertyDiscriptor: 获取属性描述器
4 isReadable: 检查属性是否可访问
5 copyProperties: 复制属性值, 从一个对象到另一个对象
6 getPropertyDiscriptors: 获取所有属性描述器
7 isWriteable: 检查属性是否可写
8 getPropertyType: 获取对象属性类型
15 org.apache.commons.lang3.StringEscapeUtils
1 unescapehtml4: 转义
2 htmlescapeHtml4: 反转义
3 htmlescapeXml: 转义
4 xmlunescapeXml: 反转义
5 xmlescapeJava: 转义 unicode 编码
6 escapeEcmaScript: 转义 EcmaScript 字符
7 unescapeJava: 反转义 unicode 编码
8 escapeJson: 转义 JSON 字符
9 escapeXml10: 转义 Xml10
这个现在已经废弃了, 建议使用 commons-text 包里面的方法.
16 org.apache.commons.beanutils.BeanUtils
1 copyPeoperties: 复制属性值, 从一个对象到另一个对象
2 getProperty: 获取对象属性值
3 setProperty: 设置对象属性值
4 populate: 根据 Map 给属性复制
5 copyPeoperty: 复制单个值, 从一个对象到另一个对象
6 cloneBean: 克隆 bean 实例
现在你只要了解了以上 16 种最流行的工具类方法, 你就不必要再自己写工具类了, 不必重复造轮子. 大部分工具类方法通过其名字就能明白其用途, 如果不清楚的, 可以看下别人是怎么用的, 或者去网上查询其用法.
另外, 工具类, 根据阿里开发手册, 包名如果要使用 util 不能带 s, 工具类命名为 XxxUtils
最后: 一波读者小福利~
读到这的朋友还可以免费领取一份收集的 Java 面试资料和 Java 核心知识体系文档及更多 Java 进阶知识笔记和视频资料.
来源: http://www.jianshu.com/p/38c64b449740