【问题标题】:Deleting a folder and all its contents with Qt?使用 Qt 删除文件夹及其所有内容?
【发布时间】:2015-01-03 19:13:08
【问题描述】:

如何使用Qt删除文件夹及其所有内容?

我尝试使用:

QFile::remove();

但它似乎一次只删除一个文件。

【问题讨论】:

标签: c++ qt


【解决方案1】:

Qt5 及以上版本有QDir::removeRecursively:

QDir dir("C:\\Path\\To\\Folder\\Here");
dir.removeRecursively();

对于 Qt4 或更低版本,您可以使用删除每个文件的递归函数:

bool removeDir(const QString & dirName)
{
    bool result = true;
    QDir dir(dirName);

    if (dir.exists(dirName)) {
        Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden  | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
            if (info.isDir()) {
                result = removeDir(info.absoluteFilePath());
            } else {
                result = QFile::remove(info.absoluteFilePath());
            }

            if (!result) {
                return result;
            }
        }
        result = dir.rmdir(dirName);
    }
    return result;
}

here所述。

【讨论】:

  • 我删除了整个目录包含大约700个文件的源代码,幸运的是我前一天提交了svn。 QDir::NoDotAndDotDot 非常重要,在其他地方它会跳跃一个高度,然后它会删除那里的所有内容
猜你喜欢
  • 2012-09-19
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2014-04-01
  • 1970-01-01
相关资源
最近更新 更多