Проблема с глобусом в Java 7

Как бы я ни хотел, я не могу по-настоящему понять, как бороться с glob в Java. ниже короткой программы:

public class Test{
    public static void main(String args[]) throws IOException{
        Path p1 = Paths.get("C:\\Users\\all\\Test\\cool.jpg");
        Path p2 = Paths.get("cool.jpg");
        PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**/*.jpg")
        System.out.println(matcher.matches(p1));
        System.out.println(matcher.matches(p2));
    }   
}

Результат ИСТИНА / ЛОЖЬ

Запуск с "glob: *.jpg" приводит к значению FALSE / TRUE

Таким образом, похоже, что в первый раз при поиске за пределами папки находился проект (файл java), а во второй раз в папке находился файл java.

Если я изменю второй путь на любое другое местоположение (кроме того, где находится мой проект java), результат будет: для glob:**/*. Jpg -> TRUE/TRUE и для glob: *.jpg -> FALSE/FALSE.

Так что мой вопрос: я хорошо понял, что с помощью glob:*.??? это поиск в папке, где находится проект Java и использует glob:**/*.??? поиск по определенному пути, отличному от папки, в которой находится проект Java. Потому что в документации написано:

Шаблон glob указывается в виде строки и сопоставляется с другими строками, такими как имена каталогов или файлов. Синтаксис Glob следует нескольким простым правилам: Звездочка * соответствует любому количеству символов (включая ни одного). Две звездочки, **, работают как *, но пересекают границы каталога. Этот синтаксис обычно используется для сопоставления полных путей.

Но нигде не упоминается, что границы каталога относятся к каталогу, в котором расположен Java-проект.

1 ответ

Измените шаблон глобуса на это:

"glob:**.jpg"

Ваш шаблон соответствует только путям к файлам, содержащим хотя бы один каталог.

Например, следующий шаблон соответствует только путям, по крайней мере, с двумя каталогами (ex path: a/b/image.jpg)

"glob:**/**/*.jpg"

И просто к вашему сведению он не ищет файлы, он только проверяет, соответствует ли данный путь шаблону.

Другие вопросы по тегам