PathオブジェクトとStringオブジェクトがあります。Pathオブジェクトは、ファイル名で表される開始パスの一部を表します。
たとえば、ファイル名/Music/Beatles/Help.mp3の場合、Pathオブジェクトは次のようになります。
/
/Music
/Music/Beatles
この単純なメソッドは、パスの一部からベースフォルダーを引いたものを返します
public String getPathRemainder(Path path, String filename)
{
if(baseFolder.getNameCount()==0)
{
return song.getFilename().substring(baseFolder.toString().length());
}
else
{
return song.getFilename().substring(baseFolder.toString().length()+File.separator.length());
}
すなわち。
Music/Beatles/Help.mp3
Beatles/Help.mp3
Help.mp3
しかし、単純ですが、ベースフォルダがルートフォルダの場合は「/」(UNIXでは)で終わるが、ルートパスがないという事実を説明する必要があるため、かなり面倒です。
きちんとしたアプローチがあると確信していますが、私にはわかりません。
使用java.nioでのJava 7以降で利用可能に:
Path file = Paths.get("/Music/Beatles/Help.mp3");
Path dir1 = Paths.get("/");
Path dir2 = Paths.get("/Music");
Path dir3 = Paths.get("/Music/Beatles");
System.out.println(dir1.relativize(file));
System.out.println(dir2.relativize(file));
System.out.println(dir3.relativize(file));
あなたが得る:
Music/Beatles/Help.mp3
Beatles/Help.mp3
Help.mp3
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加