当前位置: 首页 > 编程日记 > 正文

排名前 16 的 Java 工具类

转载来自微信公众号:Java 技术栈。如有侵权,请联系作者删除!!

在 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<String>
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<String>)中的一个

七. org.springframework.util.StringUtils

hasText:检查字符串中是否包含文本
hasLength:检测字符串是否长度大于0
isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null)
commaDelimitedStringToArray:逗号分隔的String转换为数组
collectionToDelimitedString:把集合转为CSV格式字符串
replace 替换字符串
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<NameValuePair>

十一. 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实例

根据阿里开发手册,包名如果要使用 util 不能带 s,工具类命名为XxxUtils

转载于:https://www.cnblogs.com/miantiao312/p/11279993.html

相关文章:

c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D Redshift Render

c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D & Redshift Render 教程大小 1.66G 共15小节 1280X720 mp4 视频 语言&#xff1a;英语中文字幕 百度一下 云桥网络 平台huo取 教程&#xff01; Skillshare – Create A Spa…

Java学习总结:23

前言&#xff1a;断更挺久了&#xff0c;今天把之前的补上 Annotation 3种最为常用的Annotation定义&#xff0c;Override、Deprecated和SuppressWarnings 1.准确的覆写&#xff1a;Override 当进行方法覆写时&#xff0c;为了保证子类所覆写的方法的确是父类中定义过的方法…

Windows Live Writer发布测试

通过Windows Live Writer发布文章测试&#xff01;&#xff01;&#xff01;&#xff01; 转载于:https://www.cnblogs.com/passerlee/p/5000567.html

2022-2028年中国锂电池用聚烯烃隔膜行业市场发展调研及投资方向分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电池用聚烯烃隔膜行业市场行业相关概述、中国锂电池用聚烯烃隔膜行业市场行业运行环境、…

【莫队算法】bzoj3781 小B的询问

莫队经典。 开个数组维护a[i]出现的次数。 1 #include<cstdio>2 #include<cmath>3 #include<algorithm>4 using namespace std;5 int Num,CH[12],f,c;6 inline void R(int &x){7 c0;f1;8 for(;c<0||c>9;cgetchar())if(c-)f-1;9 for(x0…

计算机为什么需要十六进制?

我们知道内存是按照字节粒度来寻址的,因此采用的数字系统必须很好的表达一个字节,也就是8比特,从这个角度上看256进制(2^8)是最好的,因为一个256进制就是表达一个字节,但还是基于可读性的原因,256进制对于人类来说记忆负担过重,而16进制则刚刚好,一个16进制数字表示一个字节的一半(4个比特),两个16进制数字正好表示一个字节。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对应的二进制是啥,比如给定一个十六进制数,假设其最后一位是9,那为什么十六进制是二进制的好朋友呢?

JAVA 自定义函数式编程

​ 2.2)定义接口 void testInterface(String str);2.定义一个普通接口(TestInterface.java)​ 2.1)类上注明为函数式接口有且只能有一个方法;

7.1.1 [Enterprise Library]缓存应用程序块场景和目标

缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计。这些任务根据场景进行了组织&#xff0c;每个场景都给出了一个真实世界情况的示例&#xff0c;如添加条目到缓存&#xff0c;讨论了情况所需要的缓存功能&#xff0c;并展示了完成任务的代码。 根据场景组…

中式古建筑su模型大全

中式古建筑su模型大全 sketchup草图大师古建塔亭子寺庙名楼民居古建筑中式su模型素材 sketchup模型 古代建筑 古代房屋 古镇 古代街景 古代商业街 古代园林 阁楼 寺庙 含各类古建筑模型合集su模型 文件解压后大小&#xff1a;13G 含预览图 百度一下 云桥网络 平台huo取 素材…

Java学习总结:24

Lambda表达式 Lambda表达式指的是应用在单一抽象方法(SAM)接口环境下的一种简化定义形式&#xff0c;可以用于解决匿名内部类的定义复杂问题。 Lambda表达式的语法&#xff1a; (参数)->方法体相当于子类覆写抽象方法的方法体 例&#xff1a;Lambda表达式入门操作 packa…

【转】Flask安装

Flask 依赖两个外部库&#xff1a;Werkzeug 和 Jinja2 。 Werkzeug 是一个 WSGI&#xff08;在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。 那么如何在你的电脑上安装这一切&#xff1f;虽说条条大道通罗马&#xff0c;但是最强大的方式是 vi…

OpenFeign服务接口调用

OpenFeign是什么? Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。 OpenFeign能干什么? Feign和OpenFeign两者区别 OpenFeign使用步骤

完美解决网站PNG图标在IE6下的透明显示

现在IE6虽然有些落后&#xff0c;但不少xp用户还是首选IE6浏览器&#xff0c;一款经典长久也标准快速的浏览器必然会有忠实的用户&#xff0c;png图标IE6下默认是不支持的&#xff0c;可以通过js代码实现&#xff0c;下面由一叶扁舟为大家整理&#xff0c;代码可直接下载一、下…

WPF Layout System

http://blog.tangcs.com/2009/05/23/wpf-layout-system/转载于:https://www.cnblogs.com/WarrenTang/archive/2009/05/23/1487622.html

ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush

ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush 时长:8小时|视频:1920X1080 。教程大小 2.6G 语言&#xff1a;英语中文字幕 百度一下 云桥网络 平台huo取 教程&#xff01; 这个课程非常适合那些…

Java学习总结:25

内建函数式接口 对于可能出现的函数式接口的方法最多只有4类&#xff1a;有参数有返回值、有参数无返回值、无参数有返回值、判断真假。 为了简化开发者的定义以及实现操作的统一&#xff0c;Java提供了一个新的开发包&#xff1a;java.util.function&#xff0c;并且在这个包…

Uva 3767 Dynamic len(set(a[L:R])) 树套树

Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem3767 Description 给你n个数&#xff0c;m次操作 Q x y 询问[x1,y]有多少个不同的数…

2022-2028年中国锂电池设备行业深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电池设备行业市场行业相关概述、中国锂电池设备行业市场行业运行环境、分析了中国锂电池…

Cocos Studio的动画系统介绍

Cocos Studio介绍Cocos Studio是一套基于Cocos2D-x的免费游戏开发工具集&#xff0c;它能帮助开发者快速创建游戏资源&#xff0c;将大部分繁琐的游戏开发工作使用编辑器来快速制作&#xff0c;进一步帮助游戏开发者减短开发周期、提高开发效率。Cocos Studio本身不光只是针对[…

机器学习实战源码数据集

链接&#xff1a;https://pan.baidu.com/s/1Ss7x60VXdyQFYW9aiKS0Lg 提取码&#xff1a;9xj6 github下载地址&#xff1a; 转载于:https://www.cnblogs.com/YukiNote/p/11286106.html

blender硬表面建模渲染终极教程

blender硬表面建模渲染终极教程 Gumroad - The ULTIMATE Guide to Hard Ops and Boxcutter Gumroad-硬操作和切箱机的终极指南 教程大小 6G 1920X1080分辨率 语言:英语中文字幕 含案例源文件 云桥网络 平台获取教程 本教程共包含两大部分 第一部分 硬操作和Boxcutter菜单…

Java学习总结:26

线程与进程 进程是程序的一次动态执行过程&#xff0c;它经历了从代码加载、执行到执行完毕的一个完整过程&#xff0c;这个过程也是进程本身从产生、发展到最终消亡的过程。 线程是比进程更小的执行单位&#xff0c;线程是在进程的基础上进行的进一步划分&#xff0c;一个进程…

UINavigationController技巧一——修改返回按钮的标题

UINavigationController 一般push到另一界面后&#xff0c;返回按钮标题便是上一页面的title&#xff0c;但是对于push的第一页或者是上一页面没有title的&#xff0c;返回按钮标题便是默认back&#xff0c;如图所示 在本页面修改title没有用&#xff0c;试了很多办法终于找到 …

Idea groovy表生成实体类带注释

Idea groovy表生成实体类带注释 1.点开datasourse&#xff0c;打开idea带的数据库工具&#xff0c;具体添加数据库连接&#xff0c;这里不描述。 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的&#xff0c;需要自己配置&#xff0c;往下&#xff1a; 3.根据图中的步…

fflush函数的深入理解

本人昵称sky&#xff0c;欢迎与各位多多交流学习 这样的c程序想必大家都不陌生&#xff0c;fflush()这个函数有清除输入输出缓存的功能&#xff0c;那很多人就会问了&#xff0c;什么是清除输入输出缓存呢&#xff1f; 其实就是我们在printf输出的时候&#xff0c;是先输出到一…

VS快捷键专题

如要初始化VS开发环境,使用如下命令:开始->运行->键入“devenv.exe /resetuserdata”。 ShiftAltEnter: 切换全屏编辑CtrlB,T / CtrlK,K: 切换书签开关CtrlB,N / CtrlK,N: 移动到下一书签CtrlB,P: 移动到上一书签CtrlB,C: 清除全部标签CtrlI: 渐进式搜索CtrlShiftI: 反向…

Maya阿诺德室外环境灯光照明和渲染技术学习视频教程

Maya阿诺德室外环境灯光照明和渲染技术学习视频教程 Maya and Arnold_ Exterior Lighting and Rendering 教程时长 1小时47分 大小 1.1G 1280X720分辨率 使用软件&#xff1a;Maya 、 Arnold、PS 共八大章 33小节 语言&#xff1a;英语机译中文字幕 作者推荐 翻译还算比较准确…

Java学习总结:27

多线程常用操作方法 线程的命名与取得 由于多线程的状态不确定&#xff0c;所以线程的名字就成为了唯一的分辨标记&#xff0c;则在定义线程名称时一定要在线程启动之前设置名字&#xff0c;尽量不要重名&#xff0c;且尽量不要为已经启动动的线程修改名字。 由于线程状态的不…

Routing

假如有一个请求&#xff1a;localhost/home/index&#xff0c;那么路由需要做的事情如下&#xff1a; &#xff08;1&#xff09;确定Controller &#xff08;2&#xff09;确定Action &#xff08;3&#xff09;确定其他参数 &#xff08;4&#xff09;根据识别出来的数据&…

2022-2028年中国锂电材料产业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电材料行业市场行业相关概述、中国锂电材料行业市场行业运行环境、分析了中国锂电材料行…