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

我到目前为止所做的是:

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) ,它以单一方法包装您的代码(带有额外的validation)。

不是Java8,但您始终可以使用apache Commons库中的FilenameUtils.getExtension() 。 🙂

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

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