Форматирование маски Java для диапазона дат - PullRequest
0 голосов
/ 02 апреля 2012

Я работаю над проектом, который извлекает файлы со стороннего FTP-сайта, где файлы определяются маской, скажем, 'XXX'MMddy.FILE , где XXX код поставщика и y - последняя цифра года.

Мое приложение касается только файлов, соответствующих маске, но не заботится о фактической дате в файле. В настоящее время мы строим список дат месяц назад с помощью объекта Java Calendar и перебираем его, чтобы создать каждую возможную маску, пока одна из них не будет найдена или не будет определена как недопустимая. Я чувствую, что должен быть лучший способ сделать это ...

Итак, еще раз, в заключительном вопросе, есть ли способ использовать маску, не создавая экземпляр каждой даты для сравнения с фактическим именем файла?

т.е. XXX04022.FILE соответствует XXXMMddy.FILE

1 Ответ

2 голосов
/ 02 апреля 2012

Вы можете реализовать 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;
    }
}
...