的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;
}
}
为什么不只是一个'acceptFromFTP(字符串的localName):boolean'方法与单'return localname.matches(“\\ w {3} \\ d {6} [。] FILE”)'?当然,将这种类型的FTP'ls'查询的输入,而不是'mget *',然后匹配是非常明智的。 – 2012-04-02 17:55:19
这真是太好了,正是我在找的东西。只有其他问题是.FILE扩展名可以改变,但只有我关心的特定的,即(.ABC,.CDE,.FAS,.CAD)。我将如何支持? – shuniar 2012-04-03 12:35:16
使用模式:'“^ [A-Z] {3} [0-9] {6} [。](FILE | ADC | CDE | FAS | CAD)$”'。 – GavinCattell 2012-04-03 14:24:17