Program w języku Java, aby uzyskać ścieżkę względną z dwóch ścieżek bezwzględnych

W tym przykładzie nauczymy się pobierać ścieżkę względną z dwóch ścieżek bezwzględnych w Javie przy użyciu metod String, klasy URI i pakietu java.nio.file.

Przykład 1: Uzyskaj ścieżkę względną z dwóch ścieżek bezwzględnych za pomocą klasy 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(); ) ) )

Wynik

 Ścieżka bezwzględna 1: C: Users Desktop Programiz Java Time.java Ścieżka bezwzględna 2: C: Users Ścieżka względna pulpitu: Programiz / Java / Time.java

W powyższym przykładzie mamy dwie ścieżki bezwzględne o nazwach bezwzględna ścieżka1 i ścieżka bezwzględna2. Użyliśmy klasy URI do konwersji ścieżek bezwzględnych na ścieżkę względną.

  • toURI () - konwertuje Fileobiekt na Uri
  • relativize () - wyodrębnia ścieżkę względną, porównując ze sobą dwie ścieżki bezwzględne
  • getPath () - konwertuje Uri na ciąg

Zalecana lektura :

  • Plik Java
  • Klasa URI Java

Przykład 2: Uzyskaj ścieżkę względną z dwóch ścieżek bezwzględnych przy użyciu metod typu 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); ) )

Wynik

 Ścieżka bezwzględna 1: C: Users Desktop Programiz Java Time.java Ścieżka bezwzględna 2: C: Users Desktop Ścieżka bezwzględna: Programiz Java Time.java

W powyższym przykładzie przekonwertowaliśmy ścieżki plików na ciągi. Zwróć uwagę na wyrażenie,

 absolutePath1.substring(absolutePath2.length())

W tym przypadku substring()metoda zwraca część bezwzględnej ścieżki1, zaczynając od indeksu równego długości bezwzględnej ścieżki2. Oznacza to, że ciąg reprezentowany przez absolutną ścieżkę 2 jest usuwany z bezwzględnej ścieżki1.

Aby dowiedzieć się więcej o tym, jak działa podciąg, odwiedź stronę Java String podciąg ().

Przykład 3: Uzyskaj ścieżkę względną z dwóch ścieżek bezwzględnych za pomocą pakietu 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); ) )

Wynik

 Relative Path: ProgramizJavaTime.java

W powyższym przykładzie użyliśmy relativize()metody Pathinterfejsu, aby uzyskać ścieżkę względną z dwóch ścieżek bezwzględnych.

Zalecane lektury :

  • Java Paths Class
  • Interfejs Java Path

Interesujące artykuły...