私が今までやったことは次のとおりです:
String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
System.out.printf("'%s'%n", ext); // prints: 'txt'
Java 8?にはもっと便利な方法がありますか?
いいえ、 JDK8リリースの変更ログ を参照してください
JDKにはこれ以上効率的で便利な方法はありませんが、多くのライブラリは、Guavaのように、このための準備ができたメソッドを提供します: Files.getFileExtension(fileName)
コードを単一のメソッドでラップします(追加の検証付き)。
Java8ではありませんが、Apache Commonsライブラリの FilenameUtils.getExtension()
を常に使用できます。 :)
実際には、(Java 8。
他の回答で説明されている「古い」メソッドのほとんどは、拡張子がない場合は空の文字列を返しますが、これによりNullPointerExceptionsは回避されますが、すべてのファイルに拡張子があるわけではないことを簡単に忘れることができます。 オプション を返すことで、この事実について自分自身と他の人に思い出させることができ、空の拡張子を持つファイル名(末尾のドット)と拡張子のないファイル(ドットなし)を区別することもできますファイル名)
public static Optional<String> findExtension(String fileName) {
int lastIndex = fileName.lastIndexOf('.');
if (lastIndex == -1) {
return Optional.empty();
}
return Optional.of(fileName.substring(lastIndex + 1));
}
使用する FilenameUtils.getExtension
from Apache Commons IO
例:
フルパス名またはファイル名のみを指定できます。
String myString1 = FilenameUtils.getExtension("helloworld.exe"); // returns "exe"
String myString2 = FilenameUtils.getExtension("/home/abc/yey.xls"); // returns "xls"
お役に立てれば ..