7hutool实战FileUtil⽂件⼯具类(100多个⽂件常⽤操作⽅法)
技术活,该赏
关注+⼀键三连(点赞,评论,收藏)再看,养成好习惯
⽤途:⽂件⼯具类(⽂件常⽤操作)
使⽤场景
提供100多个⽂件常⽤操作⽅法,包含并不局限于:判断⽂件或⽂件夹是否为空、判断file是否为⽂件或⽂件夹、递归⽂件夹⾥的所有⽂件、获取指定⽂件夹的所有⽂件名、获取临时⽂件夹或临时⽂件的内容或者路径、计算⽂件夹或⽂件的总⼤⼩、创建⽂件或⽂件夹、创建临时⽂件或临时⽂件夹、删除⽂件或⽂件夹、修改⽂件名或⽂件夹名、复制⽂件或⽂件夹、移动⽂件或⽂件夹、清空⽂件夹、获取规范的绝对路径、⽐较两个⽂件、判断⽂件是否被改动、获取⽗路径或⼦路径、获取主⽂件名或后缀名等
项⽬引⽤
此博⽂的依据:hutool-5.6.5版本源码
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.5</version>
</dependency>
⽅法摘要
⽅法
描述
是否为Windows环境
列出⽬录⽂件
给定的绝对路径不能是压缩包中的路径
⽂件是否为空
⽬录:⾥⾯没有⽂件时为空 ⽂件:⽂件⼤⼩为0时为空
⽂件是否为⾮空
⽬录:⾥⾯没有⽂件时为空 ⽂件:⽂件⼤⼩为0时为空
⽬录是否为空
递归遍历⽬录以及⼦⽬录中的所有⽂件
如果提供file为⽂件,直接返回过滤结果
递归遍历⽬录以及⼦⽬录中的所有⽂件
如果提供file为⽂件,直接返回过滤结果
递归遍历⽬录并处理⽬录下的⽂件,可以处理⽬录或⽂件:
⾮⽬录则直接调⽤{@link Consumer}处理
⽬录则递归调⽤此⽅法处理
递归遍历⽬录以及⼦⽬录中的所有⽂件
如果提供file为⽂件,直接返回过滤结果
递归遍历⽬录以及⼦⽬录中的所有⽂件
递归遍历⽬录以及⼦⽬录中的所有⽂件
获得指定⽬录下所有⽂件名
不会扫描⼦⽬录
创建File对象,相当于调⽤new File(),不做任何处理
创建File对象,⾃动识别相对或绝对路径,相对路径将⾃动从ClassPath下寻
通过多层⽬录创建⽂件
元素名(多层⽬录名)
创建File对象
创建File对象
获取临时⽂件路径(绝对路径)
获取临时⽂件⽬录
获取⽤户路径(绝对路径)
获取⽤户⽬录
判断⽂件是否存在,如果path为null,则返回false
判断⽂件是否存在,如果file为null,则返回false
是否存在匹配⽂件
指定⽂件最后修改时间
指定路径⽂件最后修改时间
计算⽬录或⽂件的总⼤⼩
当给定对象为⽂件时,直接调⽤ {@link File#length()}
当给定对象为⽬录时,遍历⽬录下的所有⽂件和⽬录,递归计算其⼤⼩,求和返回
给定⽂件或⽬录的最后修改时间是否晚于给定时间
给定⽂件或⽬录的最后修改时间是否晚于给定时间
创建⽂件及其⽗⽬录,如果这个⽂件存在,直接返回这个⽂件
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建⽂件及其⽗⽬录,如果这个⽂件存在,直接返回这个⽂件
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建⽂件及其⽗⽬录,如果这个⽂件存在,直接返回这个⽂件
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建⽂件及其⽗⽬录,如果这个⽂件存在,直接返回这个⽂件
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建所给⽂件或⽬录的⽗⽬录
创建⽗⽂件夹,如果存在直接返回此⽂件夹
删除⽂件或者⽂件夹
路径如果为相对路径,会转换为ClassPath路径! 注意:删除⽂件夹时不会判断⽂件夹是否为空,如果不空则递归删除⼦⽂件或⽂件夹某个⽂件删除失败会终⽌删除操作
删除⽂件或者⽂件夹
注意:删除⽂件夹时不会判断⽂件夹是否为空,如果不空则递归删除⼦⽂件或⽂件夹
某个⽂件删除失败会终⽌删除操作
清空⽂件夹
注意:清空⽂件夹时不会判断⽂件夹是否为空,如果不空则递归删除⼦⽂件或⽂件夹
某个⽂件删除失败会终⽌删除操作
清空⽂件夹
注意:清空⽂件夹时不会判断⽂件夹是否为空,如果不空则递归删除⼦⽂件或⽂件夹
某个⽂件删除失败会终⽌删除操作
清理空⽂件夹
此⽅法⽤于递归删除空的⽂件夹,不删除⽂件
如果传⼊的⽂件夹本⾝就是空的,删除这个⽂件夹
创建⽂件夹,如果存在直接返回此⽂件夹
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建⽂件夹,会递归⾃动创建其不存在的⽗⽂件夹,如果存在直接返回此⽂件夹
此⽅法不对File对象类型做判断,如果File不存在,⽆法判断其类型
创建临时⽂件
创建后的⽂件名为 prefix[Randon].tmp
创建临时⽂件
创建后的⽂件名为 prefix[Randon].tmp
创建临时⽂件
创建后的⽂件名为 prefix[Randon].suffix From com.jodd.io.FileUtil
通过JDK7+的 Files#copy(Path, Path, CopyOption…) ⽅法拷贝⽂件
通过JDK7+的 Files#copy(Path, Path, CopyOption…) ⽅法拷贝⽂件
复制⽂件或⽬录
如果⽬标⽂件为⽬录,则将源⽂件以相同⽂件名拷贝到⽬标⽬录
无法复制文件复制⽂件或⽬录
情况如下:
1、src和dest都为⽬录,则将src⽬录及其⽬录下所有⽂件⽬录拷贝到dest下
2、src和dest都为⽂件,直接复制,名字为dest
3、src为⽂件,dest为⽬录,将src拷贝到dest⽬录下
复制⽂件或⽬录
情况如下:
1、src和dest都为⽬录,则讲src下所有⽂件⽬录拷贝到dest下
2、src和dest都为⽂件,直接复制,名字为dest
3、src为⽂件,dest为⽬录,将src拷贝到dest⽬录下
复制⽂件或⽬录
情况如下:
1、src和dest都为⽬录,则讲src下所有⽂件(包括⼦⽬录)拷贝到dest下
2、src和dest都为⽂件,直接复制,名字为dest
3、src为⽂件,dest为⽬录,将src拷贝到dest⽬录下
移动⽂件或者⽬录
修改⽂件或⽬录的⽂件名,不变更路径,只是简单修改⽂件名,不保留扩展名。
修改⽂件或⽬录的⽂件名,不变更路径,只是简单修改⽂件名
重命名有两种模式:
1、isRetainExt为true时,保留原扩展名:
2、isRetainExt为false时,不保留原扩展名,需要在newName中
获取规范的绝对路径
获取绝对路径
此⽅法不会判定给定路径是否有效(⽂件或⽬录存在)
获取绝对路径,相对于ClassPath的⽬录
如果给定就是绝对路径,则返回原路径,原路径把所有替换为/
兼容Spring风格的路径表⽰,例如:classpath:config/example.setting也会被识别后转换
获取标准的绝对路径
给定路径已经是绝对路径
此⽅法并没有针对路径做标准化,建议先执⾏{@link #normalize(String)}⽅法标准化路径后判断
判断是否为⽬录,如果path为null,则返回false
判断是否为⽬录,如果file为null,则返回false
判断是否为⽂件,如果path为null,则返回false
判断是否为⽂件,如果file为null,则返回false
检查两个⽂件是否是同⼀个⽂件
所谓⽂件相同,是指File对象是否指向同⼀个⽂件或⽂件夹
⽐较两个⽂件内容是否相同
⾸先⽐较长度,长度⼀致再⽐较内容
此⽅法来⾃Apache Commons io
⽐较两个⽂件内容是否相同
⾸先⽐较长度,长度⼀致再⽐较内容,⽐较内容采⽤按⾏读取,每⾏⽐较
此⽅法来⾃Apache Commons io
⽂件路径是否相同
取两个⽂件的绝对路径⽐较,在Windows下忽略⼤⼩写,在Linux下不忽略。
获得最后⼀个⽂件路径分隔符的位置
判断⽂件是否被改动
如果⽂件对象为 null 或者⽂件不存在,被视为改动
修复路径
如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留
1. 1. 统⼀⽤ /
2. 2. 多个 / 转换为⼀个 /
3. 3. 去除两边空格
4. 4. … 和 . 转换为绝对路径,当…多于已有路径时,直接返回根路径
栗⼦:
“/foo//” =》 “/foo/” “/foo/./” =》 “/foo/” “/foo/…/bar” =》 “/bar” “/foo/…/bar/” =》 “/bar/” “/foo/…/bar/…/baz” =》 “/baz” “/…/” =》 “/” “foo/bar/…” =》 “foo” “foo/…/bar” =》 “bar” “foo/…/…/bar”=》 “bar” “//server/foo/…/bar” =》 “/server/bar” “//server/…/bar” =》 “/bar” “C: oo…ar” =》 “C:/bar” “C:…ar” =》 “C:/bar” “~/foo/…/bar/” =》 “~/bar/” “~/…/bar” =》 “bar”
获得相对⼦路径
栗⼦:
dirPath: d:/aaa/bbb filePath: d:/aaa/bbb/ccc =》 ccc dirPath: d:/Aaa/bbb filePath: d:/aaa/ =》
获得相对⼦路径,忽略⼤⼩写
栗⼦:
dirPath: d:/aaa/bbb filePath: d:/aaa/bbb/ccc =》 ccc dirPath: d:/Aaa/bbb filePath: d:/aaa/ =》 dirPath:
d:/Aaa/bbb filePath: d:/aaa/bbb/ =》 “”
判断⽂件路径是否有指定后缀,忽略⼤⼩写
常⽤语判断扩展名
根据⽂件流的头部信息获得⽂件类型
1、⽆法识别类型默认按照扩展名识别
2、xls、doc、msi头信息⽆法区分,按照扩展名区分
3、zip可能为docx、xlsx、pptx、jar、war头信息⽆法区分,按照扩展名区分
转换⽂件编码
此⽅法⽤于转换⽂件编码,读取的⽂件实际编码必须与指定的srcCharset编码⼀致,否则导致乱码
转换换⾏符
将给定⽂件的换⾏符转换为指定换⾏符
清除⽂件名中的在Windows下不⽀持的⾮法字符,包括: / : * " < >
⽂件名中是否包含在Windows下不⽀持的⾮法字符,包括: / : * " < >
计算⽂件CRC32校验码
计算⽂件校验码
获取Web项⽬下的web root路径
原理是⾸先获取ClassPath路径,由于在web项⽬中ClassPath位于 WEB-INF/classes/下,故向上获取两级⽬录即可。
获取指定层级的⽗路径
getParent(“d:/aaa/bbb/cc/ddd”, 0) -》 “d:/aaa/bbb/cc/ddd” getParent(“d:/aaa/bbb/cc/ddd”, 2) -》 “d:/aaa/bbb”getParent(“d:/aaa/bbb/cc/ddd”, 4) -》 “d:/” getParent(“d:/aaa/bbb/cc/ddd”, 5) -》 null
获取指定层级的⽗路径
getParent(file(“d:/aaa/bbb/cc/ddd”, 0)) -》 “d:/aaa/bbb/cc/ddd” getParent(file(“d:/aaa/bbb/cc/ddd”, 2)) -》
“d:/aaa/bbb” getParent(file(“d:/aaa/bbb/cc/ddd”, 4)) -》 “d:/” getParent(file(“d:/aaa/bbb/cc/ddd”, 5)) -》 null
检查⽗完整路径是否为⾃路径的前半部分,如果不是说明不是⼦路径,可能存在slip注⼊。
根据⽂件扩展名获得MimeType
判断是否为符号链接⽂件
判断给定的⽬录是否为给定⽂件或⽂件夹的⼦⽬录
创建{@link RandomAccessFile}
创建{@link RandomAccessFile}
⽂件内容跟随器,实现类似Linux下"tail -f"命令功能
此⽅法会阻塞当前线程
⽂件内容跟随器,实现类似Linux下"tail -f"命令功能
此⽅法会阻塞当前线程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论