在Qt中修改文件名可以通过以下两种主要方法实现:
一、使用`QFile::rename()`函数
这是最直接且推荐的方法,适用于修改单个文件名。`rename()`函数接受两个参数:旧文件路径和新文件路径,如果新路径的目录不存在,会自动创建。
示例代码:
```cpp
include include include bool renameFile(const QString &oldPath, const QString &newPath) { QFileInfo fileInfo(oldPath); if (!fileInfo.exists()) { qDebug() << "文件不存在:" << oldPath; return false; } QString absolutePath = fileInfo.absolutePath(); QString fileName = fileInfo.fileName(); QString newFileName = "done_" + fileName; // 在文件名前添加前缀 QString newPath = absolutePath + "/" + newFileName; return QFile::rename(oldPath, newPath); } int main() { QString oldName = "example.txt"; QString newName = "renamed_example.txt"; if (renameFile(oldName, newName)) { qDebug() << "文件重命名成功!"; } else { qDebug() << "文件重命名失败!"; } return 0; } ``` 注意事项: 1. 新路径的目录必须存在,否则重命名失败; 2. 如果旧文件被其他进程占用,重命名会失败。 二、使用`QFile`对象构造函数 通过创建`QFile`对象并调用`setFileName()`方法,可以修改文件名。但需注意: 该方法仅改变对象关联的文件名,不会实际移动或删除文件; 需先打开文件(如使用`open()`函数),否则无法修改。 示例代码: ```cpp include include bool renameWithQFile(const QString &oldPath, const QString &newName) { QFile file(oldPath); if (!file.open(QFile::WriteOnly)) { qDebug() << "无法打开文件:" << oldPath; return false; } file.setFileName(newName); if (!file.close()) { qDebug() << "无法关闭文件:" << newName; return false; } return true; } int main() { QString oldName = "example.txt"; QString newName = "renamed_example.txt"; if (renameWithQFile(oldName, newName)) { qDebug() << "文件重命名成功!"; } else { qDebug() << "文件重命名失败!"; } return 0; } ``` 注意事项: 该方法仅改变对象关联的文件名,原文件不会被删除; 需先打开文件才能修改名称,否则会失败。 总结 推荐使用`QFile::rename()`:简单高效,适用于大多数场景; 使用`QFile`对象:适用于需要在修改名称前后进行文件读写操作的复杂场景。 根据具体需求选择合适的方法即可。