我會在回答結束時回到您的示例。
當涉及到地址/訪問文件和文件夾時,relativize()的目的是獨立於底層文件系統的結構。您不必知道您的應用程序文件夾位於哪個父文件夾/路徑中。你只需要知道你的應用程序相關的文件結構,並可以使用relativize()來訪問可能被放置在完全不同文件夾中的所需文件。
下面是一個例子:
比方說,你已經創建了一個應用程序。你簡單的文件夾結構
/myApp/app/app.java
/myApp/img/picture1.img
/myApp/sounds/ringtones/bell.mp3
啓動應用程序的工作路徑是
<parent path>/myApp/app/
如果要立即訪問picture1.img你不必知道它的真實路徑(從根向下到它的實際文件夾)是。只需使用relativize()提供的相對路徑即可。它是這樣的:
Path path = Paths.get("/myApp/app/app.java");
Path path2 = Paths.get("/myApp/img/picture1.img");
System.out.println((path.relativize(path2)));
導致
../../img/picture1.img
這是「相對路徑」從文件app.java到您的文件picture1.img。
代表文件app.java的第一路徑符號本身
的第二是它的父文件夾/應用
您現在所在的文件夾中
/myApp
從哪裏你回到梯子後面的p ATH
/img/picture1.img
可以使用上面顯示的相對路徑,你不必在意它的真實路徑(),它可以得到的文件,例如:
/Users/me/apps/myApp/img/picture1.img
它只是沒有按」如果您知道自己的文件夾結構並使用相對路徑訪問您的文件,那麼您就不必打開應用程序文件夾所在的位置。
現在回到你的例子
相對化()不知道,從你的角度來看
<parent folder>/documents/Test/cat.html
應該是一樣
/Users/somename/documents/Test/cat.html
對於相對化()它看起來像這樣
/root/Users/somename/documents/Test/cat.html
/root/documents/Test/cat.html
所以,從上cat.html開始你去
1)cat.html = ../
2)測試= ../../
3)文檔= ../../../
4)somename = ../../../../
5)使用者= ../../../../。 ./
現在你已經收到d根,現在你沿着第二條路走下梯子。
所以輸出
../../../../../documents/Test/cat.html
是從相對化完全正確()的點視圖。
這個解釋有助於您更好地理解relativize()的功能嗎?
您目前對該方法的目標理解是什麼? –