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

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

0 голосов
/ 31 октября 2018

Столько, сколько я хочу, я не могу по-настоящему понять, как бороться с 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));
    }   
}

Результат TRUE / FALSE

Запуск с «glob: * .jpg» приводит к значению ЛОЖЬ / TRUE

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

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

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

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

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

1 Ответ

0 голосов
/ 31 октября 2018

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

"glob:**.jpg"

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...