Hutool(糊涂工具)-超级好用的Java工具类库



简介

Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。它最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。


Hutool是Hu + tool的自造词,谐音“糊涂”,寓意,追求“万事都作糊涂观,无所谓失,无所谓得”的境界。


Hutool如何改变我们的coding方式

Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。


以计算MD5为例:


【以前】打开百度 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用


【现在】引入Hutool -> SecureUtil.md5()


同样,当我们想实现什么功能,脑袋中第一个想到的就是去找XXXUtil,而非百度。




是不是感觉java开发者的春天到了!


包含组件

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:


hutool-aop JDK动态代理封装,提供非IOC下的切面支持


hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤


hutool-cache 简单缓存实现


hutool-core 核心,包括Bean操作、日期、各种Util等


hutool-cron 定时任务模块,提供类Crontab表达式的定时任务


hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装


hutool-db JDBC封装后的数据操作,基于ActiveRecord思想


hutool-dfa 基于DFA模型的多关键字查找


hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)


hutool-http 基于HttpUrlConnection的Http客户端封装


hutool-log 自动识别日志实现的日志门面


hutool-script 脚本执行封装,例如Javascript


hutool-setting 功能更强大的Setting配置文件和Properties封装


hutool-system 系统参数调用封装(JVM信息等)


hutool-json JSON实现


hutool-captcha 图片验证码实现


hutool-poi 针对POI中Excel的封装


hutool-socket 基于Java的NIO和AIO的Socket封装


可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。




举个栗子:



日期时间工具-DateUtil

考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。


对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用(例如日志记录等),提供了众多便捷的方法对日期对象操作,关于DateTime会在相关章节介绍。



文件工具类-FileUtil

在IO操作中,文件的操作相对来说是比较复杂的,但也是使用频率最高的部分,我们几乎所有的项目中几乎都躺着一个叫做FileUtil或者FileUtils的工具类,我想Hutool应该将这个工具类纳入其中,解决用来解决大部分的文件操作问题。


总体来说,FileUtil类包含以下几类操作工具:


文件操作:包括文件目录的新建、删除、复制、移动、改名等


文件判断:判断文件或目录是否非空,是否为目录,是否为文件等等。


绝对路径:针对ClassPath中的文件转换为绝对路径文件。


文件名:主文件名,扩展名的获取


读操作:包括类似IoUtil中的getReader、readXXX操作


写操作:包括getWriter和writeXXX操作


在FileUtil中,我努力将方法名与Linux相一致,例如创建文件的方法并不是createFile,而是touch,这种统一对于熟悉Linux的人来说,大大提高了上手速度。当然,如果你不熟悉Linux,那FileUtil工具类的使用则是在帮助你学习Linux命令。这些类Linux命令的方法包括:


ls 列出目录和文件


touch 创建文件,如果父目录不存在也自动创建


mkdir 创建目录,会递归创建每层目录


del 删除文件或目录(递归删除,不判断是否为空),这个方法相当于Linux的delete命令


copy 拷贝文件或目录


这些方法提供了人性化的操作,例如touch方法,在创建文件的情况下会自动创建上层目录(我想对于使用者来说这也是大部分情况下的需求),同样mkdir也会创建父目录。


URL工具-URLUtil



URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。在Java中,也可以使用URL表示Classpath中的资源(Resource)地址。


方法

获取URL对象

URLUtil.url 通过一个字符串形式的URL地址创建对象


URLUtil.getURL 主要获得ClassPath下资源的URL,方便读取Classpath下的配置文件等信息。


其它

URLUtil.formatUrl 格式化URL链接。对于不带http://头的地址做简单补全。


URLUtil.encode 封装URLEncoder.encode,将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头。


URLUtil.decode 封装URLDecoder.decode,将%开头的16进制表示的内容解码。


URLUtil.getPath 获得path部分 URI -> http://www.aaa.bbb/search?scope=ccc&q=ddd PATH -> /search


URLUtil.toURI 转URL或URL字符串为URI。




看我我都想去把之前写过的辣鸡代码都改一遍


具体操作,请看官网介绍:https://www.hutool.cn/



网友评论

0条评论

发表

网友评论

0条评论

发表

最新评论

推荐文章

彩龙

Copyright © 2008-2019 彩龙社区(http://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP