答えの最後にあなたの例に戻ります。
relativize()の目的は、ファイルとフォルダを特定/アクセスする際の基礎となるファイルシステムの構造から独立していることです。どの親フォルダ/パスにアプリケーションフォルダがあるかを知る必要はありません。アプリケーション関連のファイル構造を知っているだけで、relativize()を使って必要なファイルにアクセスすることができます。このファイルはまったく別のフォルダに置くことができます。
はここに例を示します
はあなたがアプリを作成したとしましょう。あなたの簡単なフォルダ構造は、作業パスが
<parent path>/myApp/app/
あなたがpicture1.imgにアクセスしたい場合は、今あなたがルートから下へ、何の実際のパス(知っている必要はありませんでアプリを起動する
/myApp/app/app.java
/myApp/img/picture1.img
/myApp/sounds/ringtones/bell.mp3
です実際のフォルダに)。 relativize()が提供する相対パスを使用してください。これはあなたのファイルpicture1.imgにあなたのファイルapp.javaから「相対パス」である
../../img/picture1.img
になり
Path path = Paths.get("/myApp/app/app.java");
Path path2 = Paths.get("/myApp/img/picture1.img");
System.out.println((path.relativize(path2)));
:それはこのようになります。ファイルの略
最初のパスのシンボルapp.java自体
二は、フォルダ
に今ある親フォルダ/アプリを です
/myApp
ここから、pの後にはしごを下に戻ってきますATH
/img/picture1.img
あなたは上に示した相対パスを使用してファイルを取得することができますし、あなたは、例えば、可能性があり、そののrealpath()を気にする必要はありません。
/Users/me/apps/myApp/img/picture1.img
それは単にdoesnの」あなた自身のフォルダ構造を知っていて、相対パスでファイルにアクセスしている限り、あなたのアプリケーションフォルダがどこにあるか気にする必要はありません。今すぐ戻ってあなたの例に
相対化()あなたの視点から
<parent folder>/documents/Test/cat.html
がために
/Users/somename/documents/Test/cat.html
のと同じことになっていることを知りません。 relativize()は次のようになります
/root/Users/somename/documents/Test/cat.html
/root/documents/Test/cat.html
ので、上位cat.htmlから始まるあなたは
1)cat.html = ../
2)試験= ../../
3)文書を行きます= ../../../
4)somenameの= ../../../../
5)ユーザー= ../../../../。 ./
今、あなたは2番目の道をたどって梯子を降りる。
ので、出力
../../../../../documents/Test/cat.html
の相対化()の時点から完全に正しいですビュー。
この説明は、relativize()関数の機能を理解するのに役立ちましたか?
あなたの現在の理解はどのようなものですか? –