JAVA-删除文件扩展名的最有效方法



我想要删除文件的扩展名。例如:

  • ActualFile = image.png
  • ExpectedFile = image

使用哪种方法最有效?

  1. org.apache.commons.io提供的removeExtension()方法
  2. fileName.substring(0, fileName.lastIndexOf('.'))

没有区别,只有一个。您真的想添加整个Apache库以只使用一个方法吗?如果您在应用程序中使用Apache,那么也可以使用它。如果没有,请创建您的自定义实现,这不是一门火箭科学。

commons-io中查看removeExtension,您可以看到substring也以类似于您描述的方式在水下使用:

public static String removeExtension(final String fileName) {
if (fileName == null) {
return null;
}
failIfNullBytePresent(fileName);
final int index = indexOfExtension(fileName);
if (index == NOT_FOUND) {
return fileName;
}
return fileName.substring(0, index);
}

您的方法速度更快,因为执行的操作更少,但removeExtension方法具有failIfNullBytePresent,状态为:

检查输入是否为空字节,这是未初始化数据的符号传递给文件级函数。

这可能用于毒字节攻击。

indexOfExtension来获得具有更多检查的扩展的索引(正如您可以在该方法的javadoc中看到的那样(。

结论

您的方法更快,但我想说,在各种情况下使用commons-io更安全/更一致,但使用什么取决于您的情况有多复杂,无论是应用程序的关键功能还是您自己的自制项目。removeExtension并不是你不应该单独使用的复杂或缓慢的

最新更新