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