JAVA正則表達(dá)式過(guò)濾文件的實(shí)現(xiàn)方法
JAVA正則表達(dá)式過(guò)濾文件的實(shí)現(xiàn)方法
正則表達(dá)式過(guò)濾文件列表,聽(tīng)起來(lái)簡(jiǎn)單,如果用java實(shí)現(xiàn),還真需要一番周折,本文簡(jiǎn)析2種方式
1、適用于路徑確定,文件名時(shí)正則表達(dá)式的情況(jdk6的寫(xiě)法)
String filePattern = "/data/logs/.+\\.log";
File f = new File(filePattern);
File parentDir = f.getParentFile();
String regex = f.getName();
FileSystem FS = FileSystems.getDefault();
final PathMatcher matcher = FS.getPathMatcher("regex:" + regex);
DirectoryStream.Filter<Path> fileFilter = new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path entry) throws IOException {
return matcher.matches(entry.getFileName()) && !Files.isDirectory(entry);
}
};
List<File> result = Lists.newArrayList();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(parentDir.toPath(), fileFilter)) {
for (Path entry : stream) {
result.add(entry.toFile());
}
} catch (IOException e) {
e.printStackTrace();
}
for(File file : result) {
System.out.println(file.getParent() + "/" + file.getName());
}
2、適用于路徑確定,文件名正則表達(dá)式的情況,這種正則表達(dá)式是JAVA支持的表達(dá)式,而非系統(tǒng)(unix)文件系統(tǒng)表達(dá)式(jdk8寫(xiě)法)
Path path = Paths.get("/data/logs");
Pattern pattern = Pattern.compile("^.+\\.log");
List<Path> paths = Files.walk(path).filter(p -> {
//如果不是普通的文件,則過(guò)濾掉
if(!Files.isRegularFile(p)) {
return false;
}
File file = p.toFile();
Matcher matcher = pattern.matcher(file.getName());
return matcher.matches();
}).collect(Collectors.toList());
for(Path item : paths) {
System.out.println(item.toFile().getPath());
}
以上就是java 正則表達(dá)式過(guò)濾文件的實(shí)例,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Mybatis-plus 批量插入太慢的問(wèn)題解決(提升插入性能)
公司使用的Mybatis-Plus操作SQL,用過(guò)Mybatis-Plus的小伙伴一定知道他有很多API提供給我們使用,但是批量插入大數(shù)據(jù)太慢應(yīng)該怎么解決,本文就詳細(xì)的介紹一下,感興趣的可以了解一下2021-11-11
詳解RSA加密算法的原理與Java實(shí)現(xiàn)
這篇文章主要和大家分享非對(duì)稱(chēng)加密中的一種算法,那就是 RSA 加密算法。本文介紹了RSA算法的原理與Java實(shí)現(xiàn),感興趣的小伙伴可以嘗試一下2022-10-10
SpringBoot項(xiàng)目實(shí)現(xiàn)MyBatis流式查詢(xún)的教程詳解
這篇文章主要介紹了SpringBoot項(xiàng)目如何實(shí)現(xiàn)MyBatis的流式查詢(xún),mybatis的流式查詢(xún),有點(diǎn)冷門(mén),實(shí)際用的場(chǎng)景比較少,但是在某些特殊場(chǎng)景下,卻是十分有效的一個(gè)方法,感興趣的同學(xué)可以參考一下2023-06-06
Spring解決循環(huán)依賴(lài)問(wèn)題的四種方法匯總
這篇文章主要介紹了Spring解決循環(huán)依賴(lài)問(wèn)題的四種方法匯總,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案
這篇文章主要介紹了idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Mybatis實(shí)現(xiàn)動(dòng)態(tài)排序方式
這篇文章主要介紹了Mybatis實(shí)現(xiàn)動(dòng)態(tài)排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
IDEA之IDEA連接gitlab協(xié)同開(kāi)發(fā)方式
通過(guò)IDEA克隆GitLab項(xiàng)目實(shí)現(xiàn)代碼協(xié)同開(kāi)發(fā)相較于使用SourceTree,?通過(guò)IDEA連接GitLab進(jìn)行代碼協(xié)同開(kāi)發(fā)更顯便捷,方法包括通過(guò)VersionControl創(chuàng)建新項(xiàng)目,輸入項(xiàng)目的git?HTTP地址和本地路徑,測(cè)試連接成功后克隆項(xiàng)目,修改代碼后2024-11-11
Spring MVC獲取查詢(xún)參數(shù)及路徑參數(shù)代碼實(shí)例
這篇文章主要介紹了Spring MVC獲取查詢(xún)參數(shù)及路徑參數(shù)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
深入了解Spring Boot2.3.0及以上版本的Liveness和Readiness功能
這篇文章主要介紹了Spring Boot2.3.0及以上版本的Liveness和Readiness功能示例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

