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



到目前为止我所做的如下:

String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
System.out.printf("'%s'%n", ext); // prints: 'txt'

Java 8 中有没有更方便的方法?

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

不是Java8,但您可以随时使用apache共享资源库中的FilenameUtils.getExtension()。 :)

不,请参阅 JDK8 版本的更新日志

实际上,在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));
}

使用 Apache Commons IO 中的FilenameUtils.getExtension

例:

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

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

希望这有帮助..

相关内容

  • 没有找到相关文章

最新更新