的Java面膜格式的日期

问题描述:

我就从哪里文件由掩模界定第三方FTP站点拉文件的项目工作范围,可以说“XXX'MMddy.FILE其中XXX是供应商代码和y是一年中的最后一位数字。的Java面膜格式的日期

我的应用程序只关心与掩码匹配的文件,但不关心文件的实际日期。目前,我们正在使用Java Calendar对象创建一个月的日期列表,并遍历它以创建每个可能的掩码,直到匹配或确定为无效。我觉得应该有更好的方法来做到这一点...

因此,重申,在consise问题中,有没有办法使用该面具,而不创建每个日期的实例来比较实际的文件名?

即XXX04022.FILE符合XXXMMddy.FILE

你可以实现的FilenameFilter对File.listFiles使用:

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; 
    } 
} 
+0

为什么不只是一个'acceptFromFTP(字符串的localName):boolean'方法与单'return localname.matches(“\\ w {3} \\ d {6} [。] FILE”)'?当然,将这种类型的FTP'ls'查询的输入,而不是'mget *',然后匹配是非常明智的。 – 2012-04-02 17:55:19

+0

这真是太好了,正是我在找的东西。只有其他问题是.FILE扩展名可以改变,但只有我关心的特定的,即(.ABC,.CDE,.FAS,.CAD)。我将如何支持? – shuniar 2012-04-03 12:35:16

+0

使用模式:'“^ [A-Z] {3} [0-9] {6} [。](FILE | ADC | CDE | FAS | CAD)$”'。 – GavinCattell 2012-04-03 14:24:17