我正在开发一个从第三方FTP站点提取文件的项目,其中文件由掩码定义,让我们说'XXX'MMddy.FILE 其中 XXX 是供应商代码, y 是一年中的最后一位数。
我的应用程序只关注与掩码匹配的文件,但不关心文件的实际日期。目前,我们正在使用Java Calendar
对象构建一个月的日期列表,并迭代它以创建每个可能的掩码,直到一个匹配或被确定为无效。我觉得应该有更好的方法来做到这一点......
重申一下,在一个假设问题中,有没有办法使用掩码而不创建每个日期的实例来与实际文件名进行比较?
即。 XXX04022.FILE符合XXXMMddy.FILE
答案 0 :(得分:2)
您可以在File.listFiles
上实现FilenameFilter:
public class YourFilenameFilter extends java.io.FilenameFilter
{
public boolean accept(java.io.File file, String name)
{
boolean shouldAccept = false;
if(name!=null)
{
java.util.regex.Pattern p = java.util.regex.Pattern.compile("[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9].FILE");
java.util.regex.Matcher m = p.matcher(name);
if(m.matches()) {
shouldAccept = true;
}
}
return shouldAccept;
}
}