String
ファイルへの絶対パス(ファイル名を含む)を提供するがあります。ファイル名だけを取得したい。これを行う最も簡単な方法は何ですか?
URLがどうなるか事前にわからないので、できるだけ一般的なものにする必要があります。単純にURLオブジェクトを作成して使用することはできませんがgetFile()
、それが可能であれば理想的でしたが、必ずしもhttp://
プレフィックスである必要はなく、c:/などである可能性があります。
new File(fileName).getName();
また
int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;
最初のソリューションはシステムに依存していることに注意してください。システムのパス区切り文字のみが考慮されます。したがって、コードがUnixシステムで実行され、Windowsパスを受け取った場合、それは機能しません。これは、InternetExplorerによって送信されるファイルのアップロードを処理する場合に当てはまります。
new File(absolutePath).getName();
Apache Commons IOはFilenameUtilsクラスを提供します。これは、ファイル名のさまざまなコンポーネントを簡単に取得するための非常に豊富なユーティリティ関数のセットを提供しますが、java.io.Fileクラスは基本を提供します。
Apache Commons IO FileNameUtilsから
String fileName = FilenameUtils.getName(stringNameWithPath);
ここに2つの方法があります(どちらもOSに依存しません。)
使用Paths
:1.7以降
Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();
FilenameUtils
Apache Commons IO での使用:
String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");