PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rekursives Löschen mit QDir::rmdir()



TheDodger
27-05-2003, 11:37
Da die QT Funktion rmdir() von QDir kein rekursives Löschen ermöglciht, habe ich mir eine kleine Funktion zusammengeklaut / selber erstellt, die das ganze übernehmen soll.
Die klappt ja auch soweit, doch witzigerweise wird ein leeres verzeichniss nicht gelöscht ...

Ich häng die Funktion mal mit rein, vielleicht sieht ja jemand den Fehler, oder was auch immer ich gerade übersehe ...


bool AvUpdate::m_cleanUp( const QString dirname ) {

ClassDebug( "bool AvUpdate::cleanUp()" );

bool deleted = false;

QDir d( dirname );

Debug( d.absPath() );

const QFileInfoList* fileinfolist = d.entryInfoList();
QFileInfoListIterator it( *fileinfolist );
QFileInfo* fi;

while( ( fi = it.current() ) ) {

QString m_fileName = fi->fileName();

if( m_fileName == "." || m_fileName == ".." ) {

++it;
continue;
}

if( fi->isDir() ) {

m_cleanUp( fi->absFilePath() );
d.rmdir( fi->absFilePath() );
}
else if( fi->isFile() ){

d.remove( fi->absFilePath() );
}

++it;
}

if( d.exists() == false )
deleted = true;

return( deleted );
}