SUPPRESSION RÉCURSIVE DE FICHIERS (DELTREE)

Messages postés
542
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
- - Dernière réponse : bro love
Messages postés
7
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
7
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
4 novembre 2010
-
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
-
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
542
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2 -
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 ?