是否有新的Java 8方法来检索文件扩展名?

问题描述 投票:16回答:5

到目前为止,我所做的是:

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

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

在Java 8中有更方便的方法吗?

java file file-extension
5个回答
6
投票

14
投票

JDK中没有更有效/更方便的方法,但是许多库为您提供了现成的方法,例如Guava:Files.getFileExtension(fileName),它以单一方法包装您的代码(带有额外的验证)。


7
投票

不是Java8,但你可以随时使用apache Commons库中的FilenameUtils.getExtension()。 :)


2
投票

实际上,有一种新的方法可以考虑在Java 8中返回文件扩展名。

如果没有扩展名,其他答案中描述的大多数“旧”方法都返回一个空字符串,但是虽然这避免了NullPointerExceptions,但它很容易忘记并非所有文件都有扩展名。通过返回Optional,您可以提醒自己和其他人这个事实,并且您还可以区分具有空扩展名的文件名(末尾的点)和没有扩展名的文件(文件名中没有点)

public static Optional<String> findExtension(String fileName) {
    int lastIndex = fileName.lastIndexOf('.');
    if (lastIndex == -1) {
        return Optional.empty();
    }
    return Optional.of(fileName.substring(lastIndex + 1));
}

0
投票

使用Apache Commons IO中的FilenameUtils.getExtension

例:

您可以提供完整路径名或仅提供文件名。

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

希望这可以帮助 ..

© www.soinside.com 2019 - 2024. All rights reserved.