web-dev-qa-db-ja.com

ファイル拡張子を取得する新しいJava 8つの方法はありますか?

私が今までやったことは次のとおりです:

String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);

System.out.printf("'%s'%n", ext); // prints: 'txt'

Java 8?にはもっと便利な方法がありますか?

17
mike

いいえ、 JDK8リリースの変更ログ を参照してください

6

JDKにはこれ以上効率的で便利な方法はありませんが、多くのライブラリは、Guavaのように、このための準備ができたメソッドを提供します: Files.getFileExtension(fileName) コードを単一のメソッドでラップします(追加の検証付き)。

14
Pshemo

Java8ではありませんが、Apache Commonsライブラリの FilenameUtils.getExtension() を常に使用できます。 :)

8
null

実際には、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));
}
2
lbalazscs

使用する FilenameUtils.getExtension from Apache Commons IO

例:

フルパス名またはファイル名のみを指定できます。

String myString1 = FilenameUtils.getExtension("helloworld.exe"); // returns "exe"
String myString2 = FilenameUtils.getExtension("/home/abc/yey.xls"); // returns "xls"

お役に立てれば ..

0
Dulith De Costa