java后台获取文件保存的绝对路径(JAVA中的文件操作3-如何查找文件)
java后台获取文件保存的绝对路径(JAVA中的文件操作3-如何查找文件)
2024-07-06 05:21:57  作者:美人如云  网址:https://m.xinb2b.cn/sport/rbi343080.html

在前面的JAVA中的文件操作1-如何获取文件信息,创建文件和JAVA中的文件操作2-如何读写文件中,我们介绍了文件的基本操作那么,我们有时候还可能会遇到从文件夹中搜索某个文件的情况,这时候就需要对文件进行查找了,下面我们就来聊聊关于java后台获取文件保存的绝对路径?接下来我们就一起去了解一下吧!

java后台获取文件保存的绝对路径(JAVA中的文件操作3-如何查找文件)

java后台获取文件保存的绝对路径

java中的文件操作3-如何查找文件

在前面的JAVA中的文件操作1-如何获取文件信息,创建文件和JAVA中的文件操作2-如何读写文件中,我们介绍了文件的基本操作。那么,我们有时候还可能会遇到从文件夹中搜索某个文件的情况,这时候就需要对文件进行查找了。

通过java提供的Files.walk和PathMatcher可以来完成这一任务。Files.walk可以遍历目录树,PathMatcher可以完成目标文件的匹配,两者结合即可找到我们需要的文件。如果还对文件有其他要求,比如最近更新时间,还可以通过Files.find来自定义过滤器来完成,不过一般都不需要。

PathMatcher支持两种查找模式:glob和regex,用法是FileSystems.getDefault().getPathMatcher(matcher),matcher的语法是: 模式:匹配串,比如:

FileSystems.getDefault().getPathMatcher("glob:*.txt");

glob模式匹配

glob模式起源于 Unix 的 bash shell,在shell中非常常用,在这里的用法也是一致的。

比如下面的示例,查找所有md文件:

Path rootPath = Paths.get("D:\\project");PathMatcher markdownFileMatcher = FileSystems.getDefault().getPathMatcher("glob:***.txt 匹配这个目录中的任何.txt结尾的文件,包括子目录中的

?

匹配任意单个字符

hell?.txt 可以匹配 hello.txt

[abc]

匹配括号中给出字符,可以是一堆字母或者是范围

[abc] 表示a,b,c中任意字符,也可以通过[a-c]表示

[!abc]

匹配范围与上面相反

[!abc] 表示非a,b,c的任意字符

最常用的就是**和*了,请务必注意其中区别。

regex模式

regex模式即正则表达式模式,可以书写正则表达式来匹配文件,同样是查找md文件:

Path rootPath = Paths.get("D:\\project");PathMatcher markdownFileMatcher = FileSystems.getDefault().getPathMatcher("regex:.*\\.md");try (Stream<Path> fileAndDirs = Files.walk(rootPath)) { fileAndDirs .filter(markdownFileMatcher::matches) .limit(10) .forEach(System.out::println);}

Files.find查找文件

Files.find提供了自定义过滤器的方法,下面查找了最近修改时间在10天以内的文件:

Instant tenDaysBefore = Instant.now().minus(10, ChronoUnit.DAYS);BiPredicate<Path, BasicFileAttributes> matcher = (path, attrs) -> Files.isRegularFile(path) && attrs.lastModifiedTime().toInstant().isAfter(tenDaysBefore);try (Stream<Path> files = Files.find(rootPath, Integer.MAX_VALUE, matcher)) { files .limit(10) .forEach(System.out::println);}

matcher可以获取到Path示例来匹配路径或者文件内容,还可以获取到BasicFileAttributes得到文件的修改时间等信息,可以根据更新时间等信息来匹配文件。

  • 张大奕生活照曝光(张大奕风波再发酵)
  • 2024-07-06张大奕风波再发酵饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!转眼间,总裁夫人怒斥张大奕做“小三”一事已经过去了一年多,张大奕依旧做着头部网红,小日子过得潇洒快乐眼看着"小三"风波已经告。
  • 人说山西好风光原唱评语(新时代十大金曲)
  • 2024-07-06新时代十大金曲放歌新时代,赞美新时代,用音乐旋律唱响山西新征程,等你来战!8月5日上午,“人说山西好风光——新时代十大金曲”(华夏晋道杯)原创歌词征选创作活动正式启动,面向大众征选优美作品“人说山西好风光,地肥水美。
  • 什么虫子价值170多万(什么虫子这么金贵)
  • 2024-07-06什么虫子这么金贵来源|都市现场综合台州晚报转载请注明全部来源前两天,台州临海有两个男子因为偷虫子被刑事拘留了,他们偷的到底是什么虫子,居然触犯了法律呢?这事儿还要从临海大田双山村蔡师傅家被人砍掉的几棵树说起台州临海大。
  • 2023款保时捷911报价及图片(落地价160万上下)
  • 2024-07-06落地价160万上下保时捷,作为比BBA略高半级的豪华品牌,在国内市场也是有着较高的人气,而911作为保时捷的招牌跑车,同样受人欢喜911可以说是一个大家族,拥有着各式各样,造型不一的911跑车,而Carrera无疑是买。
  • 作文素材积累感恩名人名言(作文素材积累描写)
  • 2024-07-06作文素材积累描写好词感德感激感铭感念感纫感谢光宠洪恩眷眷开恩叩谢霖雨领情镂心面谢铭感铭刻铭佩铭心难忘人情纫佩神驰衔恩谢词谢恩谢客谢礼谢幕谢帖报偿报答报德报还报效报谢璧谢补情不忘酬报酬劳垂思春晖答礼道劳道谢电谢多谢恩宠。
  • 什么花易在客厅养好看(11种富贵花)
  • 2024-07-0611种富贵花现在很多人都喜欢在家里养上一些花,用来美化居室,点缀生活,室内养花,建议养一些利于健康的吉祥花,今天咱们就分享几种“富贵花”,客厅有空间建议养一盆,好看又好养,养人又吉祥,看看有没有你喜欢的1、吸财树。
  • 靳东和范丞丞什么关系(她骂陶喆渣说靳东戏路窄)
  • 2024-07-06她骂陶喆渣说靳东戏路窄最新一期《吐槽大会》,一向以毒舌著称的金星前来助阵,节目中,她直言自己确实毒舌,但和乱讲话、随意攻击人的“键盘侠”不一样,而是对自己所说的每句话都负得起责任,她还表示自己的毒其实应该是独到的“独”,并。