您好,欢迎访问一九零五行业门户网

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

这篇文章主要介绍了java正则表达式过滤文件的实现方法的相关资料,希望通过本文大家能够掌握理解这部分内容,需要的朋友可以参考下
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<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、适用于路径确定,文件名正则表达式的情况,这种正则表达式是java支持的表达式,而非系统(unix)文件系统表达式(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中正则表达式实现过滤文件的方法的详细内容。
其它类似信息

推荐信息