Операция переименования зависит от платформы , она может или не может быть успешной, без гарантии.
Одна из причин, по которой это невозможно переименовать, может заключаться в том, что уже существует файл с именем, что означает, что delete не удалил файл, что, как вы говорите, не так.
До f2.renameTo(f1)
вы можете добавить f1.exists()
и посмотреть, что он возвращает true или false?