Очень мало на уровне объяснено о синтаксисе путей, которые передаются в методы Path.of() и Paths.get(). В интернете нашла некоторую информацию о том, что: Разные файловые системы используют разные разделители между директориями. В Windows - backslashes (экранируются), в других - forwardslashes (не экранируются). В Java можно использовать оба варианта. Путь также можно записывать отдельными строками. Несколько вариантов записей: Path path = Paths.get("C:\\dev\\files\\windows\\license.txt"); Path path = Paths.get("C:/dev/files/windows/license.txt"); //operating system independent Path path = Paths.get("C:", "dev", "files", "windows", "license.txt"); Path path = Paths.get("C:", "dev", "files", "windows").resolve( "license.txt"); //resolve == getChild Вводные данные в данной задаче не подпадают под синтаксис и идея ругается, хотя на сайте валидатор принимает: c:\ c:\test\test.txt Вопрос 1: Как строки с неправильным синтаксисом принимаются в качестве аргумента? Переписываю в идее вводные данные - добавляю экранирование и вывожу на экран относительные пути: System.out.println(one.relativize(two)); System.out.println(two.relativize(one)); По тому что поняла из лекции вывод должен быть: test\test.txt ..\\.. В реальности получаю: ../c:\test\test.txt ../c:\ Вопрос 2: Почему реальное решение другое? Ну и Вопрос 3: Если есть под рукой, посоветуйте где можно об этом почитать или посмотреть больше.