JAVA - самый эффективный способ удалить расширение файла - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу удалить расширение файла.Например:

  • ActualFile = image.png
  • ExpectedFile = image

Какой метод наиболее эффективен для использования?

  1. removeExtension() метод предоставлен org.apache.commons.io
  2. fileName.substring(0, fileName.lastIndexOf('.'))

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Без разницы, кроме одного.Вы действительно хотите добавить всю библиотеку Apache, чтобы использовать только один метод?Если вы используете Apache в своем приложении - используйте его также.Если нет - создайте свою собственную реализацию - это не ракетостроение.

0 голосов
/ 29 ноября 2018

Глядя на removeExtension из commons-io, вы можете увидеть, что 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 не является таким сложным или медленным , что его не следует использовать как таковое.

...