Метод relativize
Метод relativize класса URI вычисляет
относительный URI между текущим URI (на котором
вызывается метод) и URI, переданным в качестве
параметра. В первый параметр мы передаем URI,
относительно которого нужно вычислить результат.
Метод возвращает новый объект URI,
представляющий собой относительный путь от
текущего URI к переданному. Если текущий URI
не является префиксом переданного, метод
возвращает переданный URI без изменений.
Синтаксис
uri.relativize(otherUri)
Пример
Давайте вычислим относительный URI между двумя абсолютными URI:
import java.net.URI;
public class Main
{
public static void main(String[] args) throws Exception
{
URI base = new URI("http://example.com/a/b/c");
URI other = new URI("http://example.com/a/b/d");
URI res = base.relativize(other);
System.out.println(res);
}
}
Результат выполнения кода:
"../d"
Пример
Давайте вычислим относительный URI, когда переданный URI находится в той же директории:
import java.net.URI;
public class Main
{
public static void main(String[] args) throws Exception
{
URI base = new URI("http://example.com/a/b/");
URI other = new URI("http://example.com/a/b/file.txt");
URI res = base.relativize(other);
System.out.println(res);
}
}
Результат выполнения кода:
"file.txt"
Пример
Давайте вычислим относительный URI, когда переданный URI находится в родительской директории:
import java.net.URI;
public class Main
{
public static void main(String[] args) throws Exception
{
URI base = new URI("http://example.com/a/b/c");
URI other = new URI("http://example.com/a/");
URI res = base.relativize(other);
System.out.println(res);
}
}
Результат выполнения кода:
"../../"
Пример
Давайте проверим поведение метода, когда текущий URI не является префиксом переданного:
import java.net.URI;
public class Main
{
public static void main(String[] args) throws Exception
{
URI base = new URI("http://example.com/a/b");
URI other = new URI("http://other.com/c/d");
URI res = base.relativize(other);
System.out.println(res);
}
}
Результат выполнения кода:
"http://other.com/c/d"