Согласно java.nio.file.Path
:
Относительный путь не может быть построен, если только один из путей имеет корневой компонент.
Почему это так? Почему нельзя релятивизировать так:
Path path1 = Paths.get("/home/test");
Path path2 = Paths.get("home");
// throws an IllegalArgumentException
Path path3 = path1.relativize(path2);
Я предполагал, что path3
приведет к относительному пути ../
. Почему для Path
допустимо возвращать результат, предполагающий, что два каталога находятся на одном уровне в файловой системе, если не определены корневые элементы, однако, когда только один путь определяет корневой элемент (как показано выше), относительный путь отсутствует можно определить?
i.e.
Path path1 = Paths.get("home/test");
Path path2 = Paths.get("user");
// results in ../../user
Path path3 = path1.relativize(path2);