Я думаю, что вы неправильно поняли использование path.relativize(Path)
В соответствии с https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Path.html#relativize (java .nio.file.Path) , есть следующее утверждение:
Создает относительный путь между этим путем и заданным путем.
например,
Path pathA = Paths.get("a"); // i.e. /a or /anyDir/anySubDir/a
Path pathB = Paths.get("b"); // i.e. /b or /anyDir/anySubDir/b
pathA.relativize(pathB)
Предположим, что результат равен ../b
, что делает это означает?
Это на самом деле говорит вам: поскольку вы находитесь внутри каталога a
, если вы хотите получить доступ к каталогу b
, вам нужен доступ с помощью этого подхода cd ../b
.
relativize(Path)
помогает анализировать относительный путь между родительским путем и дочерним путем (то есть, как получить доступ от родительского пути к дочернему пути).
В качестве альтернативы из вашего вопроса похоже, что вы предпочитаете «строить» путь вместо «анализа» относительного пути. relativize(Path)
не подходит для этой цели.
Итак, какой из них, «построить» вручную или «проанализировать», вы хотите достичь?