2013-03-05 8 views
0

Мне нужно отсортировать файлы по их имени и расширению. Для этого я использую apache commons-io RegexFileFilter. Шаблон имени файла выглядит примерно так: «filename.xml.20130101200» или «filename.xml.20130101200.inprog», где номера - это простая временная метка.RegexFileFilter ведет себя по-разному при работе в jboss 7

FileFilter regexFilter = new RegexFileFilter(".*\\d{12}|.*inprog"); 
File[] suitableFiles = dir.listFiles(regexFilter); 

Если это каталог, который содержит эти файлы в моем домашнем каталоге «/ Главная/пользователь/файлы», то все работает нормально при работе с JBoss. Но когда я меняю папку на «/ tmp/files /», тогда фильтр найдет файлы с расширением «.inprog». Когда я регистрирую количество файлов в каталоге, он показывает правильную сумму. Я написал простую основную программу для тестирования, и там все прекрасно работает, даже если файлы находятся в/tmp/files. Jboss живет в моей домашней папке.

В чем может быть проблема?

ответ

0

Проблема была в регулярном выражении. Строка регулярного выражения была взята из таблицы oracle db. Когда я изменил его на ". * \ D {12} |. inprog", удалив одну обратную косую черту, он начал работать. Также « [0-9] {12} |. * Inprog« работает правильно