新しい Java ファイルシステム ユーティリティ (1.7) では、このPath
relativize(Path)
方法が機能するはずです。パス操作のチュートリアルから。
Path p1 = Paths.get("joe");
Path p2 = Paths.get("sally");
他の情報がない場合、joe と sally は兄弟であると見なされます。これは、ツリー構造の同じレベルに存在するノードを意味します。joe から sally に移動するには、最初に親ノードまで 1 レベル上に移動し、次に sally まで下に移動する必要があります。
// Result is ../sally
Path p1_to_p2 = p1.relativize(p2);
// Result is ../joe
Path p2_to_p1 = p2.relativize(p1);
さて、そのような手法が望ましいかどうかについては、他の人にコメントしてもらいます.
パスがディスク上に存在する必要はないことに注意してください。固定ルートを持つパスを宣言することもできるため、Path
likenew Path("/servlet/subdir/subdir2")
とPath
likeはlike .`にするnew Path("/servlet")
必要があります。relativize(...)
Path
new Path("../..")