繁体   English   中英

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

[英]JAVA - Most efficient way to remove file extension

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

  • 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 不是复杂或缓慢的,你不应该深灰色使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM