Программа Java для получения относительного пути из двух абсолютных путей

В этом примере мы научимся получать относительный путь из двух абсолютных путей в Java с помощью методов String, класса URI и пакета java.nio.file.

Пример 1. Получение относительного пути из двух абсолютных путей с использованием класса URI

 import java.io.File; import java.net.URI; class Main ( public static void main(String() args) ( try ( // Two absolute paths File absolutePath1 = new File("C:\Users\Desktop\Programiz\Java\Time.java"); System.out.println("Absolute Path1: " + absolutePath1); File absolutePath2 = new File("C:\Users\Desktop"); System.out.println("Absolute Path2: " + absolutePath2); // convert the absolute path to URI URI path1 = absolutePath1.toURI(); URI path2 = absolutePath2.toURI(); // create a relative path from the two paths URI relativePath = path2.relativize(path1); // convert the URI to string String path = relativePath.getPath(); System.out.println("Relative Path: " + path); ) catch (Exception e) ( e.getStackTrace(); ) ) )

Вывод

 Абсолютный путь1: C: Users Desktop Programiz Java Time.java Абсолютный путь2: C: Users Desktop Относительный путь: Programiz / Java / Time.java

В приведенном выше примере у нас есть два абсолютных пути с именами absolutePath1 и absolutePath2. Мы использовали класс URI для преобразования абсолютных путей в относительные пути.

  • toURI () - преобразует Fileобъект в Uri
  • relativize () - извлекает относительный путь, сравнивая два абсолютных пути друг с другом
  • getPath () - преобразует Uri в строку

Рекомендуемая литература :

  • Файл Java
  • Класс Java URI

Пример 2: получить относительный путь из двух абсолютных путей с помощью методов String

 import java.io.File; class Main ( public static void main(String() args) ( // Create file objects File file1 = new File("C:\Users\Desktop\Programiz\Java\Time.java"); File file2 = new File("C:\Users\Desktop"); // convert file objects to string String absolutePath1 = file1.toString(); System.out.println("Absolute Path1: " + absolutePath1); String absolutePath2 = file2.toString(); System.out.println("Absolute Path2: " + absolutePath2); // get the relative path String relativePath = absolutePath1.substring(absolutePath2.length()); System.out.println("Absolute Path: " + relativePath); ) )

Вывод

 Абсолютный путь1: C: Users Desktop Programiz Java Time.java Абсолютный путь2: C: Users Desktop Абсолютный путь: Programiz Java Time.java

В приведенном выше примере мы преобразовали пути к файлам в строки. Обратите внимание на выражение,

 absolutePath1.substring(absolutePath2.length())

Здесь substring()метод возвращает часть absolutePath1, начиная с индекса, равного длине absolutePath2. То есть строка, представленная absolutePath2, удаляется из absolutePath1.

Чтобы узнать больше о том, как работает подстрока, посетите Java String substring ().

Пример 3: получить относительный путь из двух абсолютных путей с помощью пакета java.nio.file

 import java.nio.file.Path; import java.nio.file.Paths; class Main ( public static void main(String() args) ( // Create file objects Path absolutePath1 = Paths.get("C:\Users\Desktop\Programiz\Java\Time.java"); Path absolutePath2 = Paths.get("C:\Users\Desktop"); // convert the absolute path to relative path Path relativePath = absolutePath2.relativize(absolutePath1); System.out.println("Relative Path: " + relativePath); ) )

Вывод

 Relative Path: ProgramizJavaTime.java

В приведенном выше примере мы использовали relativize()метод Pathинтерфейса для получения относительного пути из двух абсолютных путей.

Рекомендуемая литература :

  • Класс Java Paths
  • Интерфейс пути Java

Интересные статьи...