JAVA正則表達(dá)式過濾文件的實(shí)現(xiàn)方法
JAVA正則表達(dá)式過濾文件的實(shí)現(xiàn)方法
正則表達(dá)式過濾文件列表,聽起來簡單,如果用java實(shí)現(xiàn),還真需要一番周折,本文簡析2種方式
1、適用于路徑確定,文件名時正則表達(dá)式的情況(jdk6的寫法)
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寫法)
Path path = Paths.get("/data/logs");
Pattern pattern = Pattern.compile("^.+\\.log");
List<Path> paths = Files.walk(path).filter(p -> {
//如果不是普通的文件,則過濾掉
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á)式過濾文件的實(shí)例,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Mybatis-plus 批量插入太慢的問題解決(提升插入性能)
公司使用的Mybatis-Plus操作SQL,用過Mybatis-Plus的小伙伴一定知道他有很多API提供給我們使用,但是批量插入大數(shù)據(jù)太慢應(yīng)該怎么解決,本文就詳細(xì)的介紹一下,感興趣的可以了解一下2021-11-11
詳解RSA加密算法的原理與Java實(shí)現(xiàn)
這篇文章主要和大家分享非對稱加密中的一種算法,那就是 RSA 加密算法。本文介紹了RSA算法的原理與Java實(shí)現(xiàn),感興趣的小伙伴可以嘗試一下2022-10-10
SpringBoot項(xiàng)目實(shí)現(xiàn)MyBatis流式查詢的教程詳解
這篇文章主要介紹了SpringBoot項(xiàng)目如何實(shí)現(xiàn)MyBatis的流式查詢,mybatis的流式查詢,有點(diǎn)冷門,實(shí)際用的場景比較少,但是在某些特殊場景下,卻是十分有效的一個方法,感興趣的同學(xué)可以參考一下2023-06-06
idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案
這篇文章主要介紹了idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Mybatis實(shí)現(xiàn)動態(tài)排序方式
這篇文章主要介紹了Mybatis實(shí)現(xiàn)動態(tài)排序方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
IDEA之IDEA連接gitlab協(xié)同開發(fā)方式
通過IDEA克隆GitLab項(xiàng)目實(shí)現(xiàn)代碼協(xié)同開發(fā)相較于使用SourceTree,?通過IDEA連接GitLab進(jìn)行代碼協(xié)同開發(fā)更顯便捷,方法包括通過VersionControl創(chuàng)建新項(xiàng)目,輸入項(xiàng)目的git?HTTP地址和本地路徑,測試連接成功后克隆項(xiàng)目,修改代碼后2024-11-11
Spring MVC獲取查詢參數(shù)及路徑參數(shù)代碼實(shí)例
這篇文章主要介紹了Spring MVC獲取查詢參數(shù)及路徑參數(shù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
深入了解Spring Boot2.3.0及以上版本的Liveness和Readiness功能
這篇文章主要介紹了Spring Boot2.3.0及以上版本的Liveness和Readiness功能示例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

