JAVA正则表达式过滤文件的实现方法
程序员文章站
2024-02-24 14:22:33
java正则表达式过滤文件的实现方法
正则表达式过滤文件列表,听起来简单,如果用java实现,还真需要一番周折,本文简析2种方式
1、适用...
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 正则表达式过滤文件的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 详解MySQL从入门到放弃-安装