Russian Qt Forum

Qt => Общие вопросы => Тема начата: sclown от Июль 15, 2007, 15:31



Название: Рекурсивное удаление
Отправлено: sclown от Июль 15, 2007, 15:31
Как рекурсивно удалить каталог?


Название: Re: Рекурсивное удаление
Отправлено: -=s0L=- от Июль 15, 2007, 17:31
Цитата: "sclown"
Как рекурсивно удалить каталог?


запустить для этого стандартную утилиту "rm -rf dir"


Название: Re: Рекурсивное удаление
Отправлено: QCasper от Июль 16, 2007, 08:35
Цитата: "-=s0L=-"
Запустить для этого стандартную утилиту "rm -rf dir"


Особенно под win32 ;)


Название: Re: Рекурсивное удаление
Отправлено: -=s0L=- от Июль 16, 2007, 10:15
Цитата: "QCasper"
Цитата: "-=s0L=-"
Запустить для этого стандартную утилиту "rm -rf dir"


Особенно под win32 ;)


ну тогда так "rmdir /S dir", но лучше средствами Qt это делать :)


Название: Рекурсивное удаление
Отправлено: Sergeich от Июль 16, 2007, 12:32
Код:
bool deleteDir( const QString& dirName )
{
QDir dir(dirName);
QStringList dirList = dir.entryList( QDir::Dirs | QDir::NoDotAndDotDot );
QStringList fileList = dir.entryList( QDir::Files );
   QStringList::ConstIterator it;

for ( it = dirList.begin(); it != dirList.end(); ++it ) {
if ( !deleteDir( dir.absoluteFilePath(*it) ) )
return false;
}
for ( it = fileList.begin(); it != fileList.end(); ++it ) {
if ( !dir.remove( *it ) )
return false;
}
dir.refresh();
if ( dir.entryList(QDir::NoDotAndDotDot).count() == 0 ) {
QDir d(dir);
d.cdUp();
if ( !d.rmdir( dirName ) )
return false;
}
return true;
}