问题描述
|
我想用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);