开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
六、日期时间工具
七、IO流操作
1.介绍
IO的操作包括读和写,应用场景包括网络操作和文件操作。IO操作在Java中是一个较为复杂的过程,我们在面对不同的场景时,要选择不同的InputStream和OutputStream实现来完成这些操作。而如果想读写字节流,还需要Reader和Writer的各种实现类。这些繁杂的实现类,一方面给我我们提供了更多的灵活性,另一方面也增加了复杂性。
2.封装
- IoUtil 流操作工具类
- FileUtil 文件读写和操作的工具类。
- FileTypeUtil 文件类型判断工具类
- WatchMonitor 目录、文件监听,封装了JDK1.7中的WatchService
- ClassPathResource针对ClassPath中资源的访问封装
- FileReader 封装文件读取
- FileWriter 封装文件写入
3.IOUtil
# 1.说明
- 主要是用来操作IO流相关的操作
// 之前做文件拷贝时
FileInputStream is = new FileInputStream(new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/aa.txt"));
FileOutputStream os = new FileOutputStream(new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/cc.txt"));
// 定义缓冲区
byte[] b = new byte[1024];
int len = 0;
while (true){
len = is.read(b);
if(len == -1) break;
os.write(b, 0, len);
}
is.close();
os.close();
// 现在使用 Hutool 后做文件拷贝
FileInputStream is = new FileInputStream(new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/aa.txt"));
FileOutputStream os = new FileOutputStream(new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/cc.txt"));
IoUtil.copy(is,os); // 下面三种拷贝方式选一种即可
// IoUtil.copy(is,os,2048);//指定缓冲区大小
// IoUtil.copy(is,os,IoUtil.DEFAULT_BUFFER_SIZE);//指定缓冲区大小
4.FileUtil
//读取文件
FileUtil.file("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/bb.txt");
//追加字符串
FileUtil.appendString("我是小陈",file,"UTF-8");
//文件拷贝
FileUtil.copy(file,new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/bb.txt"),true);
//删除文件
// 需要注意的是,del方法会删除目录而不判断其是否为空,这一方面方便了使用,另一方面也可能造成一些预想不到的后果(比如拼写错路径而删除不应该删除的目录),所以请谨慎使用此方法。
FileUtil.del(file);
File file2 = new File("/Users/chenyannan/IdeaProjects/180codes/HuTool/src/main/resources/aa.txt");
//创建文件同时如果目录不存在也会一并创建
File touch = FileUtil.touch(file2);
//创建多级目录
File mkdir = FileUtil.mkdir(file2);
八、常用工具类
# 1.字符串工具-StrUtil
String str = "aa.txt";
boolean empty = StrUtil.isEmpty(str); //不判断空格
boolean b = StrUtil.isBlank(str); //判断空格
String s = StrUtil.removePrefix(str, "aa");//去掉前缀
String s1 = StrUtil.removeSuffix(str, ".txt");//去掉后缀
String sub = StrUtil.sub(str, 2, str.length());//截取字符串
byte[] bytes = StrUtil.bytes(str, "UTF-8");//指定字符集转为bytes
String tempalte = "姓名:{},年龄:{}";
String content = StrUtil.format(tempalte, "content", 23);
System.out.println(content);