Javaでルートフォルダとルートフォルダがないことをきちんと説明するサブパスを抽出するにはどうすればよいですか?

ポール・テイラー

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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ