//Функция удаления папки
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::remove(entryAbsPath);
}
//Для папок делаем рекурсивный вызов
foreach (QString entry, lstDirs)
{
QString entryAbsPath = dir.absolutePath() + "/" + entry;
removeFolder(QDir(entryAbsPath));
}
//Удаляем обрабатываемую папку
if (!QDir().rmdir(dir.absolutePath()))
{
res = 1;
}
return res;
}
пятница, 30 октября 2009 г.
Рекурсивное удаление каталогов в Qt
Удаляем рекурсивно папки.
Подписаться на:
Комментарии к сообщению (Atom)
Хочется внести небольшое замечание. В случае, если файлы имеют флаг read-only для удаления их через QFile::remove() потребуется проставить флаги при помощи QFile::setPermission()
ОтветитьУдалитьQFile::setPermissions( entryAbsPath, QFile::WriteOwner|QFile::WriteUser|QFile::WriteGroup|QFile::WriteOther );