ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Изучаем Ant path style patterns: правила и примеры

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для реализации поиска строк по шаблонам в стиле Ant в Java используется класс AntPathMatcher. Вот пример использования:

Java
Скопировать код
import org.springframework.util.AntPathMatcher;

AntPathMatcher matcher = new AntPathMatcher();
boolean result = matcher.match("*.jpg", "photo.jpg");  // возвращает true, поскольку "photo.jpg" соответствует шаблону JPG

С помощью функции match мы смотрим, соответствует ли файл "photo.jpg" данному шаблону *.jpg, что полезно при обработке изображений JPG, фильтрации файлов или выполнении операций с путями в файловой системе.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Разбор символов подстановки

В контексте шаблонов пути Ant символы подстановки играют важную роль в контексте поиска соответствий в строках:

  • * соответствует любому количеству символов в одном сегменте пути.
  • ** подходит для любого количества каталогов на любом уровне вложенности.
  • ? соответствует одному любому символу.

Приведем несколько примеров:

Одинокий звездочка в действии

Предположим, вам нужно найти все текстовые файлы в папке:

Markdown
Скопировать код
Шаблон: '*.txt' будет соответствовать 'notes.txt', 'chapter1.txt', но игнорирует 'novel.pdf'.

Поиск во всех каталогах

Если нужно найти файл, где бы он ни находился в каталогах:

Markdown
Скопировать код
Шаблон: '**/README.md' поможет находить 'README.md' в любом месте, даже если он спрятан где-то в иерархии каталогов.

Точно подходящее одному символу

Иногда необходимо искать с учетом конкретного символа:

Markdown
Скопировать код
Шаблон: 'data_?.csv' подойдет для 'data_1.csv', 'data_2.csv', но не подойдет для 'data_10.csv'.

Работа с переменными и регулярными выражениями в путях

Использование переменных и регулярных выражений в шаблонах позволяет точно определить нужные сегменты пути:

Java
Скопировать код
boolean result = matcher.match("web/{section:[a-z]+}/{page}.html", "web/news/article.html");
// В данном случае {section:[a-z]+} захватывает только слова в нижнем регистре вместо 'section', а {page} – подставляет 'article'.

Практические примеры сценариев

Выборочное нахождение файлов

Если вам нужно получить все JavaScript файлы в директории static, именуемые по определенному шаблону:

Markdown
Скопировать код
Шаблон: 'static/*.min.js' обработает 'static/jquery.min.js', но игнорирует 'static/jquery.js'.

Поиск файлов на разных уровнях каталогов

Когда нужно найти файл, находящийся в каталогах различной глубины:

Markdown
Скопировать код
Шаблон: 'images/**/thumbnail/*.jpg' найдет 'images/events/2021/thumbnail/pic.jpg', несмотря на глубину вложенности.

Визуализация

Шаблоны пути в стиле Ant можно представить как индивидуальные знаки, указывающие правильное направление:

Markdown
Скопировать код
ODS: 🌸📁, 🌻📁, 🌷📁, 🏡📁 (каждый из которых представляет собой разные категории в пути разработчика)

Примеры шаблонов Ant:

Markdown
Скопировать код
🐜✨ '**/*'       -> Охватывает все файлы во всех каталогах
🐜✨ '**/*.java'  -> Находит все Java файлы в любом месте
🐜✨ '🏡📁/*.java' -> Помогает найти Java файлы конкретно в корневой папке

Избегайте распространенных ошибок

Понимание области действия подстановочных символов

Легко забыть разницу между действием * и **. Важно помнить, что * работает в пределах одного каталога, тогда как ** может переключаться между разными уровнями.

Различие в разделителях пути

Будьте внимательны к разности между обратными (/) и прямыми () слэшами. Они могут варьироваться в зависимости от операционной системы, что может влиять на ваши шаблоны.

Независимость от платформы

При работе с файловой системой в Java учтите, что поведение может отличаться в зависимости от операционной системы. Стройте свои шаблоны так, чтобы они были независимы от платформы.

Полезные советы и трюки

Использование API Java NIO

PathMatcher из Java NIO может значительно усилить возможности работы с файлами.

Преимущества AntPathMatcher от Spring

Для более эффективной работы с шаблонами рекомендуется использовать AntPathMatcher из Spring.

Изучение дополнительных материалов

Официальная документация и книги, такие как "Ant in Action", предлагают глубокое погружение в тему.

Полезные материалы

  1. Работа с каталогами в Apache Ant — обширное руководство Apache Ant.
  2. Туториал: "Привет, мир!" с Apache Ant — доступное объяснение шаблонов Ant.
  3. Документация JDK 21 — официальная документация Java, которая включает информацию о FileSet и PatternSet.
  4. Ant in Action — полное руководство по работе с Ant.
  5. Примеры использования PatternSet в Java — сборник примеров кода.
  6. Создание простого build-файла — как правильно написать build-файл, используя шаблоны исключения и включения.
  7. Ant Build Scripts и подбор шаблонов — визуально доступное видео по использованию Ant и поиску по шаблону.