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