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

时间:2018-11-29 13:35:47

标签: java file-extension

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

  • ActualFile = image.png
  • ExpectedFile = image

哪种方法最有效?

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

commons-ioremoveExtension,您会发现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获取具有更多检查的扩展名的索引(如该方法here的javadoc中所见)。

结论

您的方法更快,但是我想说在各种情况下使用commons-io更为安全/一致,但是使用哪种方法取决于您的情况是否复杂,这是应用程序的关键功能还是仅仅是应用程序的关键功能?自制项目。 removeExtension不是 复杂或缓慢的功能,您不应该使用它本身。