java 文件过滤 正则,JAVA正则表达式过滤文件的实现方法

JAVA正则表达式过滤文件的实现方法

发布时间:2020-09-06 18:32:57

来源:脚本之家

阅读:102

作者:QING____

JAVA正则表达式过滤文件的实现方法

正则表达式过滤文件列表,听起来简单,如果用java实现,还真需要一番周折,本文简析2种方式

1、适用于路径确定,文件名时正则表达式的情况(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 fileFilter = new DirectoryStream.Filter() {

@Override

public boolean accept(Path entry) throws IOException {

return matcher.matches(entry.getFileName()) && !Files.isDirectory(entry);

}

};

List result = Lists.newArrayList();

try (DirectoryStream 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、适用于路径确定,文件名正则表达式的情况,这种正则表达式是JAVA支持的表达式,而非系统(unix)文件系统表达式(jdk8写法)

Path path = Paths.get("/data/logs");

Pattern pattern = Pattern.compile("^.+\\.log");

List 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 正则表达式过滤文件的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值