PDA

View Full Version : [C++] Eliminare cartella e tutto il suo contenuto


Sbrocca88
15-01-2011, 11:26
Ciao a tutti.
Esiste un comando per eliminare una cartella e tutto il suo contenuto?!
Ho trovato sul web l'api removedirectory ma non fa al caso mio in quanto elimina solo le cartelle vuote.
Sono sotto windows.
Perņ mi servirebbe un comando che possa andare bene anche su linux.
Qualche aiuto?!
Un ringraziamento a tutti

Tommo
15-01-2011, 12:49
A quanto sembra sia su Linux sia su Windows serve che la cartella sia prima vuota.
Un modo semplice per risolvere č iterare nella cartella e rimuovere tutti i files e tutte le sottocartelle.

Del tipo, in pseudocodice


void removeDir( char* path )
{
while( ci sono dei files )
rimuovi( prossimo file );

while( ci sono delle cartelle )
removeDir( path della sottocartella ); //chiamata ricorsiva

rimuovi( path );
}



Oppure potresti usare qualche libreria che astrae la faccenda, ma per cancellare una directory mi sembra eccessivo :D

marco.r
15-01-2011, 16:19
Ciao a tutti.
Esiste un comando per eliminare una cartella e tutto il suo contenuto?!
Ho trovato sul web l'api removedirectory ma non fa al caso mio in quanto elimina solo le cartelle vuote.
Sono sotto windows.
Perņ mi servirebbe un comando che possa andare bene anche su linux.
Qualche aiuto?!
Un ringraziamento a tutti

se deve essere cross-platform prova con boost::filesystem:

http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/reference.html#remove_all

Sbrocca88
15-01-2011, 18:20
Mi sembra un buon metodo quello scritto da tommo in pseudo codice...
Ma come faccio a far continuare il ciclo while fin tanto che sono presenti dei file?!
Che condizione devo mettere?!
Magari ci metto una variabile contatore e la faccio incrementare fino al numero di file presenti...
Per eliminare i file e le cartelle in maniera sequenziale uso il comando find next?!
Grazie mille...