Ich werde am Ende meiner Antwort auf Ihr Beispiel zurückkommen.
Der Zweck von relativize() ist unabhängig von der zugrunde liegenden Dateisystemstruktur, wenn es um die Adressierung/den Zugriff auf Dateien und Ordner geht. Sie müssen nicht wissen, in welchem übergeordneten Ordner/Pfad sich Ihr App-Ordner befindet. Sie müssen nur Ihre App-bezogene Dateistruktur kennen und können relativize() verwenden, um auf die benötigten Dateien zuzugreifen, die in völlig anderen Ordnern abgelegt werden können.
Hier ist ein Beispiel:
Angenommen, Sie haben eine App erstellt haben. Ihre einfache Ordnerstruktur ist
/myApp/app/app.java
/myApp/img/picture1.img
/myApp/sounds/ringtones/bell.mp3
Starten der App Ihre Arbeitspfad ist
<parent path>/myApp/app/
Wenn Sie picture1.img jetzt zugreifen möchten, müssen Sie nicht wissen, was seine wirklichen Weg (von der Wurzel nach unten zu seinem eigentlichen Ordner) ist. Verwenden Sie einfach den relativen Pfad relativize() bietet. Es geht so:
Path path = Paths.get("/myApp/app/app.java");
Path path2 = Paths.get("/myApp/img/picture1.img");
System.out.println((path.relativize(path2)));
was dazu führt,
../../img/picture1.img
Dies ist der „relative Pfad“ aus der Datei app.java zu Ihrer Datei picture1.img.
Das erste Pfad Symbol für die Datei steht app.java selbst
Die zweiten für seinen übergeordneten Ordner ist /app
Sie befinden sich nun im Ordner
/myApp
von wo Sie wieder die Leiter nach dem p gehen ath
/img/picture1.img
Sie können die Datei erhalten die relativen Pfad oben gezeigt, und Sie müssen über ihre realpath nicht kümmern(), die zum Beispiel sein könnte:
/Users/me/apps/myApp/img/picture1.img
Es ist einfach doesn‘ Es stört Sie nicht, wo sich Ihr App-Ordner befindet, solange Sie Ihre eigene Ordnerstruktur kennen und auf Ihre Dateien mit relativen Pfaden zugreifen.
zu Ihrem Beispiel Nun zurück
Relativieren() weiß nicht, dass aus Ihrer Sicht
<parent folder>/documents/Test/cat.html
sollten die gleichen wie
/Users/somename/documents/Test/cat.html
sein für relativize() es sieht so aus
/root/Users/somename/documents/Test/cat.html
/root/documents/Test/cat.html
also von der oberen cat.html beginnen Sie gehen
1) cat.html = ../
2) Test = ../../
3) Dokumente = ../../../
4) somename = ../../../../
5) Users = ../../../../. ./
Jetzt haben Sie erreicht d root und jetzt gehst du die Leiter entlang und folgst dem zweiten Pfad.
So ist der Ausgang
../../../../../documents/Test/cat.html
ist völlig korrekt aus Relativieren() 's Punkt Aussicht.
Hat diese Erklärung Ihnen geholfen, die Funktion von relativize() besser zu verstehen?
Was ist Ihr derzeitiges Verständnis davon, was die Methode bewirken soll? –