是否有新的 Java 8 检索文件扩展名的方法?
Is there a new Java 8 way of retrieving the file extension?
到目前为止我所做的如下:
String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
System.out.printf("'%s'%n", ext); // prints: 'txt'
Java8有没有更方便的方法?
不是 Java8,但您始终可以使用 apache Commons 库中的 FilenameUtils.getExtension()
。 :)
不,JDK 中没有更多的 efficient/convenient 方法,但是许多库为您提供了现成的方法,例如 Guava: Files.getFileExtension(fileName)
它将您的代码包装在单一方法中(使用附加验证)。
实际上 是 一种思考 return 文件扩展名的新方法 Java 8.
其他答案中描述的大多数 "old" 方法 return 如果没有扩展名则为空字符串,但是虽然这避免了 NullPointerExceptions,但很容易忘记并非所有文件都有一个扩展。通过 returning 一个 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"
希望这对您有所帮助..
到目前为止我所做的如下:
String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
System.out.printf("'%s'%n", ext); // prints: 'txt'
Java8有没有更方便的方法?
不是 Java8,但您始终可以使用 apache Commons 库中的 FilenameUtils.getExtension()
。 :)
不,JDK 中没有更多的 efficient/convenient 方法,但是许多库为您提供了现成的方法,例如 Guava: Files.getFileExtension(fileName)
它将您的代码包装在单一方法中(使用附加验证)。
实际上 是 一种思考 return 文件扩展名的新方法 Java 8.
其他答案中描述的大多数 "old" 方法 return 如果没有扩展名则为空字符串,但是虽然这避免了 NullPointerExceptions,但很容易忘记并非所有文件都有一个扩展。通过 returning 一个 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"
希望这对您有所帮助..