如何解决在Java中使用星号和问号来匹配文件名
| 我想用Java这样写:public class MyMatcher
{
public static boolean isMatching(String filename,String param) {
...
}
}
filename将是没有目录的文件的名称
(例如:readme.txt,shares.csv,一首好听的Song.mp3,...)
param类似于\“ *。mp3 \”,表示所有以.mp3结尾的文件,依此类推。
注意:param不是正则表达式语句,更像是在textpad或eclipse甚至dos dir上搜索文件的通常方式。
有人可以建议如何做到这一点,或者是否有一些开源库可以做到这一点?
解决方法
Apache Commons IO有一个WilcardFileFilter:
通配符匹配器使用字符\'?\'和\'* \'表示单个或多个通配符。
来自javadoc的示例:
File dir = new File(\".\");
FileFilter fileFilter = new WildcardFileFilter(\"*test*.java~*~\");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
,String pattern = param.replaceAll (\"\\\\*\",\".*\").replaceAll (\"\\\\?\",\".\");
return filename.matches (pattern);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。