SUPPRESSION RÉCURSIVE DE FICHIERS (DELTREE)

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 11 juin 2007 à 10:55
bro love Messages postés 6 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 4 novembre 2010 - 12 oct. 2009 à 04:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43066-suppression-recursive-de-fichiers-deltree

bro love Messages postés 6 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 4 novembre 2010
12 oct. 2009 à 04:53
Bonjour.
Pouviez-vous me dire quelles sont les classes à importer?
Merci
cs_jujuboss Messages postés 1 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 30 mars 2009
30 mars 2009 à 11:51
Bonjour,

J'ai tester la fonction sur un dossier C:\doss\ qui contient un fichier test.txt
et lorsque je lui done C:\doss ( comme la fonction rajoute le \* )

Ca boucle infini et la variable dossier vaut :

"C:\doss\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\." etc ..

Pourtant il n'y a qu'un seul fichier dans ce dossier :s
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
11 juin 2007 à 10:55
il faut un peu plus factoriser le code :


//fonction permettant la suppression du contenu d'un répertoire sans le supprimer
void DeleteAll(TCHAR * repertoire)
{
TCHAR Path[MAX_PATH] ;
_tcscpy(Path, repertoire) ;
_tcscat(Path, TEXT("\\*")) ;
TCHAR dossier[MAX_PATH] ;
WIN32_FIND_DATA wfd;
HANDLE hfl = FindFirstFile(Path, &wfd); // Recherche du premier fichier du répertoire
if(hfl != INVALID_HANDLE_VALUE)
{
do
{
_tcscpy(dossier, repertoire) ;
_tcscat(dossier, TEXT("\")) ;
_tcscat(dossier, wfd.cFileName) ;
if (wfd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) // Si il s'agit d'un dossier
{
DeleteAll(dossier) ; // Suppression récursive des dossiers
RemoveDirectory(dossier) ; // Suppression du dossier
}
else
{
DeleteFile(dossier); // Suppression du fichier
}
}
while(FindNextFile(hfl, &wfd)); // Tant qu'il y a de nouveaux fichiers
FindClose(hfl); // Fermeture du dossier de recherche
}
}

apres je ne suis pas sous win mais ne pourrais tu pas garder qu'un seul des deux buffers ?
Rejoignez-nous