C++ (Qt)bool removeDir (const QString &path){ QDir dir (path); const QFileInfoList fileList = dir.entryInfoList (QDir::AllEntries | QDir::NoDotAndDotDot); bool result = true; QFile file; for (QFileInfoList::const_iterator it = fileList.constBegin(), end = fileList.constEnd(); result && it != end; ++it) { const QString fileName = it->absoluteFilePath(); qDebug () << QString ("Remove ") + (it->isDir () ? "dir" : "file") << fileName; file.setFileName (fileName); result = it->isDir () ? removeDir (fileName) : file.remove (); if (!result) { qDebug () << file.errorString (); } } return result && dir.rmdir (path);}
static bool removePath(const QString &path){ bool result = true; QFileInfo info(path); if (info.isDir()) { QDir dir(path); foreach (const QString &entry, dir.entryList(QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot)) { result &= removePath(dir.absoluteFilePath(entry)); } if (!info.dir().rmdir(info.fileName())) return false; } else { result = QFile::remove(path); } return result;}
//Функция удаления папкиint removeFolder(QDir & dir){ int res = 0; //Получаем список каталогов QStringList lstDirs = dir.entryList(QDir::Dirs | QDir::AllDirs | QDir::NoDotAndDotDot); //Получаем список файлов QStringList lstFiles = dir.entryList(QDir::Files); //Удаляем файлы foreach (QString entry, lstFiles) { QString entryAbsPath = dir.absolutePath() + "/" + entry; QFile::setPermissions(entryAbsPath, QFile::ReadOwner | QFile::WriteOwner); QFile::remove(entryAbsPath); } //Для папок делаем рекурсивный вызов foreach (QString entry, lstDirs) { QString entryAbsPath = dir.absolutePath() + "/" + entry; QDir dr(entryAbsPath); removeFolder(dr); } //Удаляем обрабатываемую папку if (!QDir().rmdir(dir.absolutePath())) { res = 1; } return res;}
QString str_path;QDir dir_path;str_path=".//C//project";dir_path(str_path);