Java 7 の新しい Path オブジェクトを使用していますが、問題が発生しています。
ベース ディレクトリを持つファイル ストレージ システムがあり、独自の相対パスを作成しています。最後に、この相対パスだけをどこかに保存したいと思います。私は Path.relativize で問題に遭遇しています。
私には2つのユースケースがあります。1.
Path baseDir = Paths.get("uploads");
Path filename = Paths.get("uploads/image/test.png")
return baseDir.relativize(filename);
image/test.png
これは完璧なPath を返します。
ただし、ユースケース 2:
Path baseDir = Paths.get("uploads");
Path filename = Paths.get("image/test.png")
return baseDir.relativize(filename);
戻ります../image/test.png
。「image/test.png」を返したいだけです
パスのチュートリアルでは、
他の情報がない場合、2 つのパスは兄弟であると見なされます。
私が欲しいのは、これが事実であることを検出できるようにすることです。この場合、ファイル名だけを返し、baseDir を無視します。
私は現在このように解決していますが、もっと良い方法があることを望んでいました:
Path rootEnding = getRootDirectory().getName(getRootDirectory().getNameCount() - 1);
for (Path part : path) {
if (part.equals(rootEnding)) {
return getRootDirectory().relativize(path);
}
}
return path;
私の質問は、これを確認するより良い方法はありますか?