我想要删除文件的扩展名。例如:
ActualFile = image.png
ExpectedFile = image
使用哪种方法最有效?
- org.apache.commons.io提供的
removeExtension()
方法 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
并不是你不应该单独使用的复杂或缓慢的。