Есть ли кросс-платформенная функция в Qt, которая эквивалентна функции MoveFile в Windows и команде mv в Linux?
Как переместить файлы в Qt?
Ответ 1
Конечно, QDir::rename()
, следуя старой традиции Unix/POSIX при вызове этого переименования.
Что имеет смысл, если вы думаете о файле с его полным путем: базовые inodes просто назначают другую метку пути/файла.
Ответ 2
Вы использовали бы QDir:: rename(), но будьте осторожны с особыми случаями, когда rename()
может выйти из строя:
В большинстве файловых систем
rename()
не выполняется только еслиoldName
не существует, еслиnewName
иoldName
не находятся на тот же раздел или если файл с новое имя уже существует. Однако, есть и другие причины, по которымrename()
может выйти из строя. Например, на менее чем одна файловая системаrename()
не работает еслиnewName
указывает на открытый файл.
Ответ 3
QUrlOperator:: copy() является альтернативой QDir:: rename(), которая также может работать на вас.