NIO2. relativize() - разница путей

NIO2. relativize() - разница путей

path1.relativize(path2) вычисляет относительный путь двух путей – «разницу путей». Можно думать так: "как из path1 попасть в path2".
Оба пути должны быть либо относительные, либо абсолютные.


Path path1 = Paths.get("/test"); // абсолютный путь
Path path2 = Paths.get("/test/java/my-file.txt"); // абсолютный путь
path2.relativize(path1); // ..\..
path1.relativize(path2); // java\my-file.txt

path1 = Paths.get("test"); // относительный путь
path2 = Paths.get("test/java/my-file.txt"); // относительный путь
path2.relativize(path1); // ..\..
path1.relativize(path2); // java\my-file.txt
Нельзя построить относительный путь, если один из путей абсолютный, а второй относительный и наоборот. Нельзя построить относительный путь, если абсолютные пути имеют разные корни, например C:\ и D:\. В обоих этих случаях будет выброшен runtime-исключение IllegalArgumentException.


path1 = Paths.get("C:/test");
path2 = Paths.get("D:/test/java/my-file.txt");

path2.relativize(path1); // IllegalArgumentException
path1.relativize(path2); // IllegalArgumentException
Потоки ввода/вывода