Можно ли использовать регулярное выражение для получения имен файлов для файлов, соответствующих данному шаблону в каталоге, без необходимости вручную прокручивать все файлы.Regex для файлов в каталоге
ответ
Вы можете использовать File.listFiles(FileFilter)
:.
public static File[] listFilesMatching(File root, String regex) {
if(!root.isDirectory()) {
throw new IllegalArgumentException(root+" is no directory.");
}
final Pattern p = Pattern.compile(regex); // careful: could also throw an exception!
return root.listFiles(new FileFilter(){
@Override
public boolean accept(File file) {
return p.matcher(file.getName()).matches();
}
});
}
EDIT
Таким образом, чтобы соответствовать файлы, которые выглядят как: TXT-20100505-XXXX.trx
где XXXX
могут быть любые четыре последовательные цифры, сделать что-то вроде этого:
listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
реализовать FileFilter (только требует, чтобы переопределить метод
public boolean accept(File f)
тогда, каждый раз, когда вы будете запрашивать список файлов, будет сравнивать JVM каждый файл с вашего метода. Regex не могут и не должны можно использовать в качестве Java является кросс язык платформы и что может вызвать последствия на различных системах
я сомневаюсь в справедливости последнего предложения, зачем это было? – n002213f
Regex является стандартным для всех версий Java, независимо от операционной системы, не имеет значения, используете ли вы его. –
, то, пожалуйста, скажите, как бы вы различали файлы и каталоги в unix и windows с одним регулярным выражением? Я понял, что вопрос заключается в том, чтобы «получить имена файлов для файлов, соответствующих заданному шаблону». Это напоминает мне о написании Javascript, который поддерживает сразу несколько браузеров ... –
package regularexpression;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularFile {
public static void main(String[] args) {
new RegularFile();
}
public RegularFile() {
String fileName = null;
boolean bName = false;
int iCount = 0;
File dir = new File("C:/regularfolder");
File[] files = dir.listFiles();
System.out.println("List Of Files ::");
for (File f : files) {
fileName = f.getName();
System.out.println(fileName);
Pattern uName = Pattern.compile(".*l.zip.*");
Matcher mUname = uName.matcher(fileName);
bName = mUname.matches();
if (bName) {
iCount++;
}
}
System.out.println("File Count In Folder ::" + iCount);
}
}
- 1. Regex для имени файла в каталоге
- 2. grep regex: извлечь шаблон из всех файлов в каталоге
- 3. список файлов в каталоге
- 4. Отображение файлов в каталоге
- 5. Определение файлов в каталоге
- 6. Количество файлов в каталоге
- 7. Поиск файлов в каталоге
- 8. Ant читает файлы в каталоге и regex
- 9. grep для нескольких имен файлов в каталоге
- 10. скрипт bash для конкретных файлов в каталоге
- 11. Python Appender для файлов в каталоге
- 12. od Команда для имен файлов в каталоге
- 13. Bash скрипт для файлов в каталоге (backup)
- 14. Rewrite_rule для защиты файлов в каталоге
- 15. Для файлов в каталоге, игнорируя папки
- 16. Усилить sharepoint для сохранения файлов в каталоге
- 17. сценарий для переименования файлов в каталоге
- 18. Изменить - на. для всех файлов в каталоге
- 19. Запустить команду для всех файлов в каталоге
- 20. Изменение значка для php-файлов в каталоге
- 21. MPI для чтения всех файлов в каталоге
- 22. WQL для поиска файлов в каталоге
- 23. Структура для представления файлов в каталоге
- 24. HttpHandler для защиты файлов в виртуальном каталоге
- 25. Bash Script для отображения файлов в каталоге
- 26. vbs поиск файлов для расширения в каталоге
- 27. PHP для отображения файлов в каталоге
- 28. Solaris - поиск файлов в указанном каталоге
- 29. Linux Regex - Удаление файлов
- 30. Поиск в каталоге для поиска файлов с определенными расширениями файлов
У меня есть файлы в формате TXT-20100505-0000.trx, где * 0000 * меняют номера. TXT-20100525 - * \. Trx не оценивает. как я могу получить такие файлы? – n002213f
Вы ошибочно вводили 'TXT-201005525 -. * \. Trx'? Образец, который вы написали, будет соответствовать нулю или больше '-', за которым следует' .trx'. – msw
спасибо msw, я не ошибся, мое понимание получило все файлы с префиксом 'TXT-20100525', за которым следуют любые символы, а затем' .trx'. Какая значимость или причина наличия дополнительных '.' перед' * \\ ' – n002213f