35

Stringファイルへの絶対パス(ファイル名を含む)を提供するがあります。ファイル名だけを取得したい。これを行う最も簡単な方法は何ですか?

URLがどうなるか事前にわからないので、できるだけ一般的なものにする必要があります。単純にURLオブジェクトを作成して使用することはできませんがgetFile()、それが可能であれば理想的でしたが、必ずしもhttp://プレフィックスである必要はなく、c:/などである可能性があります。

4

5 に答える 5

81
new File(fileName).getName();

また

int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;

最初のソリューションはシステムに依存していることに注意してください。システムのパス区切り文字のみが考慮されます。したがって、コードがUnixシステムで実行され、Windowsパスを受け取った場合、それは機能しません。これは、InternetExplorerによって送信されるファイルのアップロードを処理する場合に当てはまります。

于 2009-06-18T07:37:50.200 に答える
23
new File(absolutePath).getName();
于 2009-06-18T07:38:58.027 に答える
18

Apache Commons IOはFilenameUtilsクラスを提供します。これは、ファイル名のさまざまなコンポーネントを簡単に取得するための非常に豊富なユーティリティ関数のセットを提供しますが、java.io.Fileクラスは基本を提供します。

于 2009-06-18T07:39:17.170 に答える
16

Apache Commons IO FileNameUtilsから

String fileName = FilenameUtils.getName(stringNameWithPath);
于 2012-11-13T15:00:49.440 に答える
3

ここに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();

FilenameUtilsApache Commons IO での使用:

String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");
于 2017-08-03T17:20:55.547 に答える