日期范围的 Java 掩码格式

标签 java jakarta-ee mask simpledateformat

我正在开发一个从第三方 FTP 站点提取文件的项目,其中文件由掩码定义,假设 'XXX'MMddy.FILE 其中 XXX 是供应商代码,y 是年份的最后一位数字。

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

因此,重申一下,在一个简洁的问题中,是否有一种方法可以使用掩码而不创建每个日期的实例来与实际文件名进行比较?

即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;
    }
}

关于日期范围的 Java 掩码格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980738/

相关文章:

java - 字符串数组操作

java - 从另一个类中的 protected 方法获取变量值

java - 适用于 Android 的多线程 Web 服务器

jakarta-ee - Glassfish 设置并发批处理作业的最大数量

java - 对象池管理算法

java - 使用它的缓存键取消来自管理器的请求不起作用

java - JSF - 如何将参数从一个 Controller 传递到另一个 Controller Action 事件?

python - 添加 numpy 零数组和屏蔽数组

css - CSS 中的分层蒙版

Swift:带有圆顶边缘和彩色边框的 UIVisualEffectView