我正在使用QT 5.7,并从文档中了解到:
bool QDir::rename(const QString &oldName, const QString &newName)
为什么我需要指定目录的旧名称?它不是当前的名称吗? 我在考虑这个重载函数:
bool QDir::rename(const QString &newName){
return this->rename(this->dirName(), newName);
}
这个API是否是当前目录的子目录?
"mydir/"
,其中存在文件a.txt
和b.txt
。因此,使用以下代码片段,我们可以根据它们的旧名称重命名它们。QDir dir("mydir");
dir.rename("a.txt", "aa.txt");
dir.rename("b.txt", "bb.txt");
QFile::rename(const QString &oldDirPath, const QString &newDirPath)
可以重命名一个目录本身,而不是目录中的文件或者文件夹。第一个参数为需要被重命名的目录的路径。
如果要重命名一个绝对路径下的目录,可以使用静态方法QFile::rename(const QString &oldName, const QString &newName)
。
如果要重命名目录本身,则需要使用以下代码:
bool renameDir(QDir & dir, const QString & newName) {
auto src = QDir::cleanPath(dir.filePath("."));
auto dst = QDir::cleanPath(
dir.filePath(QStringLiteral("..%1%2").arg(QDir::separator()).arg(newName)));
auto rc = QFile::rename(src, dst);
if (rc) dir.setPath(dst);
return rc;
}
QFile::rename
。 - peppe