Метод relativize
Метод relativize класса Path возвращает
новый объект Path, представляющий относительный
путь от исходного пути к пути, переданному в качестве
параметра. Иными словами, метод вычисляет, какой
путь нужно пройти из точки, заданной текущим
объектом Path, чтобы достичь точки, заданной
аргументом. В параметр метода мы передаем путь,
относительно которого нужно построить результат.
Оба пути должны быть либо абсолютными, либо
относительными, иначе будет выброшено исключение
IllegalArgumentException.
Синтаксис
path.relativize(otherPath)
Пример
Давайте построим относительный путь от одного абсолютного пути к другому:
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main
{
public static void main(String[] args)
{
Path base = Paths.get("/home/user/docs");
Path target = Paths.get("/home/user/pictures");
Path res = base.relativize(target);
System.out.println(res);
}
}
Результат выполнения кода:
"../pictures"
Пример
Давайте построим относительный путь, когда один путь является вложенным в другой:
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main
{
public static void main(String[] args)
{
Path base = Paths.get("/home/user");
Path target = Paths.get("/home/user/docs/file.txt");
Path res = base.relativize(target);
System.out.println(res);
}
}
Результат выполнения кода:
"docs/file.txt"
Пример
Давайте построим относительный путь между двумя относительными путями:
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main
{
public static void main(String[] args)
{
Path base = Paths.get("abcde");
Path target = Paths.get("abcde/fghij");
Path res = base.relativize(target);
System.out.println(res);
}
}
Результат выполнения кода:
"fghij"
Пример
Если оба пути совпадают, метод вернет пустой путь:
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main
{
public static void main(String[] args)
{
Path base = Paths.get("/home/user/docs");
Path target = Paths.get("/home/user/docs");
Path res = base.relativize(target);
System.out.println(res);
System.out.println(res.toString().isEmpty());
}
}
Результат выполнения кода:
""
true
Смотрите также
-
метод
resolve,
который присоединяет путь к текущему пути -
метод
normalize,
который убирает из пути лишние элементы -
метод
toAbsolutePath,
который превращает путь в абсолютный -
метод
getParent,
который возвращает родительский путь