web-dev-qa-db-fra.com

Supprimer un dossier non vide dans Qt

Comment supprimer un dossier non vide dans Qt.

31
Kenta

Supprimez récursivement le contenu du répertoire en premier. Voici un article de blog avec un exemple de code pour cela. J'ai inclus l'extrait de code correspondant.

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

    if (dir.exists()) {
        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 = QDir().rmdir(dirName);
    }
    return result;
}

Edit : La réponse ci-dessus était pour Qt 4. Si vous utilisez Qt 5, cette fonctionnalité est intégrée dans QDir avec le QDir: : removeRecursively () , méthode.

40
Judge Maygarden

Si vous utilisez Qt 5, il y a QDir :: removeRecursively () .

51
hpsMouse