文章目录
一、介绍
hutool
工具包在市场上用的人是越来越多了,怎么能证明它的受欢迎程度呢?
有一个平台叫做 GitHub
,它是国际性的代码托管平台,很多人,很多公司会将项目的源代码放到这个平台上面,所以是我们程序员最喜欢的一个网站,在这个网站上能找到很多很多各种各样的开源项目,因此这个网站也被我们程序员戏称为:最大的同性交友网站。
hutool
在GitHub上就是非常受欢迎的开源项目之一。
hutool
是国人开发的开源工具包,里面有很多帮助我们提高开发效率的API。
其中 Hu
是汉语拼音胡,是开发作者致敬前任公司。 tool
表示工具,两者一结合 hutool
,它的开发者还给它赋予了一层寓意:难得糊涂,因此这个工具包我们也叫做 糊涂包
,稀里糊涂的就把代码写完了。
在糊涂包中,有很多很多的工具类
比如:
DateUtil 日期时间工具类
TimeInterval 计时器工具类
StrUtil 字符串工具类
HexUtil 16进制工具类
HashUtil Hash算法类
ObjectUtil 对象工具类
ReflectUtil 反射工具类
TypeUtil 泛型类型工具类
PageUtil 分页工具类
NumberUtil 数字工具类
但是今天我们还是来学习跟 IO
相关的工具类,一共有七个工具类。
最后两个 FileReader
、FileWriter
跟字符流中的两个类名重复了,所以在使用的一定要注意导包。
二、相关网址
官网:
https://hutool.cn/
中文使用文档:
https://hutool.cn/docs/#/
API文档:
https://apidoc.gitee.com/dromara/hutool/
1)官网
https://hutool.cn/
在官网上其实没有什么太多的信息,我们可以简单来看一下。
一开始是它的名字,后面是它最新的版本。
下面就是一些相关网址。
往下拉,就是关于 Hutool
一些介绍
再往下拉,点击就可以跳转到另外两个网址。
再往下拉可以看见维护人员
2)中文使用文档
https://hutool.cn/docs/#/
第二个才是真正有用的,在简洁中就是对 Hutool
做了一个介绍。
再往下看,它说了 Hutool
里面包含了很多很多组件,每个组件里面又有不同的功能
我们主要的是来看这里的第四个:hutool-core
,它是 hutool
的核心包,在这个核心包里面提供了很多很多的工具类。
我们现在要学习的 io相关
的就是在 core
这个包中,因此一会我们要找的也是 core
里面的东西。
接下来我们就要来看一下 io
里面七个相关的类了。
这些类里面都有什么样的方法,方法都有什么样的作用呢?此时就需要来看第三个网址。
3)API文档
https://apidoc.gitee.com/dromara/hutool/
由于 Hutool
是中国人写的,所以它后面的解释都是中文的,我们在学习起来的时候非常的轻松。
在刚开始打开的页面中,就是 Hutool
里面所有的包和每个包的作用。
首先来找 core包
,这个包是核心包
但是在这个包里面还有很多很多的子包,每个子包又有自己的作用。
例如 core.bean
就是跟JavaBean相关的
core.clone
,就是跟克隆相关的。
core.date
,跟时间相关的。
再往下找,core.io
,就是跟我们现在所学习的 io
所相关的,因此一会我们要找的就是 core.io
这个包下。
怎么找?
首先看左边上面,先选择包名,找到 core.io
点击。
然后下面就会出现在 io包
下所有的类。
首先找 IoUtil
,看左边,IoUtil
中所有的方法和解释都出来了。
如果你想看 FileUtil
也一样
这些方法我们甚至都不需要自己练,看后面的解释都会了。
例如第一个 appendLines方法
:将列表写入文件,追加模式。
这里的列表可以理解为单列集合,因为方法的参数类型是 Collection
。
如果不想追加,想清空,此时就可以继续往下找,可以找到 writeLines
,表示将集合里面的数据写到文件中,但是会覆盖。
既然有写,那肯定有读的相关方法。
例如下面方法,它可以将文件里的数据读到一个集合中返回,返回值就是一个集合。
如果我现在不讲,让你用里面的方法,也只是可以使用的。这就是打基础的重要性,你可以很快上手,而且看到这个方法,你也差不多知道它的底层是怎么写的了。
三、代码示例
因为糊涂包不是我们自己写的,也不是Java写的,而是第三方写的,因此还是需要导入它的jar包。
在使用的时候要注意了,JDK版本一定要是8或者8以上的。
还是以下步骤,这里就不截图了
1,新建lib文件夹
2,把第三方jar包粘贴到文件夹中
3,右键点击add as a library
下面会对 File类
里面一些好用的、常见方法做一个演示,由于下面的方法都是静态的,因此可以直接使用类名调用。
//导包的时候一定不要导错包
import cn.hutool.core.io.FileUtil;
1)file()
file:根据参数创建一个file对象
ctrl + p 来看下它的参数
它可以将一个字符串所表示的路径变成 File对象
,还可以将父级路径跟子级路径做一个拼接,这两个功能跟之前所学习的 File
的构造方法是完全一模一样的。
还没完,它的强大之处在下面两个构造方法。
String... names
:可变参数,因此我们可以在小括号中传入多个参数一起进行拼接。
File file1 = FileUtil.file("D:\\", "aaa", "bbb", "a.txt");
System.out.println(file1);//D:\aaa\bbb\a.txt
2)touch()
touch:根据参数创建文件
那是不是跟我们之前所学习的 createNewFile()
是一样的呢?
File f = new File("a.txt");
f.createNewFile(); // 此时可以创建一个新的空的文件
但是 createNewFile()
如果父级路径是不存在的,那么方法会有IOException异常。
此时这个 touch()
就非常的强悍了,如果父级路径不存在,它不会报错,它会帮你把父级路径一起创建出来
File touch = FileUtil.touch(file1);
System.out.println(touch);
3)writeLines()
writeLines:把集合中的数据写出到文件中,覆盖模式。
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
//细节:糊涂包的相对路径,不是相对于当前项目而言的,而是相对class文件而言的
File file2 = FileUtil.writeLines(list, "D:\\a.txt", "UTF-8");
System.out.println(file2);
此时会有两个效果:集合中的数据已经写到了文件中,并且文件中的东西也被覆盖。
PS:如果是自定义对象,它会去调用对象的 toString()
写入文件中,因此我们往往需要改写 toString()
,改成我们想要的格式。
4)appendLines()
appendLines:把集合中的数据写出到文件中,续写模式。
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("aaa");
File file3 = FileUtil.appendLines(list, "D:\\a.txt", "UTF-8");
System.out.println(file3);
效果如下
5)readLines()
readLines:指定字符编码,把文件中的数据,读到集合中。
第三个参数其实是可以传递一个集合的,此时它会将 a.txt
文件里的数据进行读取,读完后放到集合中,然后再将这个集合给你返回
但是这么写太麻烦了,干嘛要自己创建集合,直接让方法帮我们创建,因此下面我们调用两个参数的方法,这个方法底层会帮我们创建集合。
在读的时候有个特点:一行数据它认为是集合中的一个元素。
List<String> list = FileUtil.readLines("D:\\a.txt", "UTF-8");
System.out.println(list);