begin process at 2012 02 10 13:37:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > SUPPRESSION RÉCURSIVE DE FICHIERS (DELTREE)

SUPPRESSION RÉCURSIVE DE FICHIERS (DELTREE)


 Information sur la source

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Classé sous :fichiers, supprimer, dossiers, répertoires Niveau :Débutant Date de création :10/06/2007 Vu :10 262

Auteur : anhackers2

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Ce code permet de supprimer tous les fichiers d'un répertoire (placé en paramètre) sans supprimer celui-ci. Très pratique lorsque l'on veut supprimer les fichiers d'un dossier système qui ne peut pas être supprimé. La commande deltree réalisait cette tâche avant.

Source

  • //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] ;
  • _tcscpy(dossier, repertoire) ;
  • _tcscat(dossier, TEXT("\\")) ;
  • WIN32_FIND_DATA wfd;
  • HANDLE hfl = FindFirstFile(Path, &wfd); // Recherche du premier fichier du répertoire
  • if(hfl != INVALID_HANDLE_VALUE)
  • {
  • _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
  • {
  • _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
  • }
  • }
  • FindClose(hfl); // Fermeture du dossier de recherche
  • }
  • }
//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] ;
 _tcscpy(dossier, repertoire) ; 
 _tcscat(dossier, TEXT("\\")) ;
 WIN32_FIND_DATA wfd;
 HANDLE hfl = FindFirstFile(Path, &wfd); // Recherche du premier fichier du répertoire
 if(hfl != INVALID_HANDLE_VALUE) 
 {
	_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
	{
		_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
		}
	}
    FindClose(hfl); // Fermeture du dossier de recherche
 }
}



 Sources de la même categorie

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty
Source avec Zip Source avec une capture [C/API] SUPPRESSION DE FICHIERS EN DOUBLE (NOMS/CONTENUS) par ncoder
Source avec Zip Source avec une capture EASYSYNCHRO => SYNCHRONISATION DE DOSSIERS par goutbouyo
Source avec Zip CRYPTAGE DE TOUS LES FICHIERS D'UN DOSSIER par W@$h!

Commentaires et avis

Commentaire de rrk275 le 11/06/2007 10:55:40

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 ?

Commentaire de jujuboss le 30/03/2009 11:51:08

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

Commentaire de bro love le 12/10/2009 04:53:50

Bonjour.
Pouviez-vous me dire quelles sont les classes à importer?
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

supprimer tout les fichiers d'un répertoire [ par AoD ] je recherche une fonction qui permet de supprimer tout les fichiers d'un répertoire.merci de vite me répondre Traitement de fichiers et répertoires sous différents OS [ par kawasaki31 ] Salut,J'ai cherché un peu partout sans trouver.Je cherche si des classes C++ existe pour copier, déplacer, supprimer un fichier, puis créer un réperto [dev-cpp] Dossiers et fichiers [ par zippro4012 ] Comment &#233;num&#233;rer les fichiers d'un dossier ? Comment &#233;num&#233;rer les dossiers d'un dossier ? Enfin, comment savoir si un fichier exis private.h et private.rc [ par Scientophage ] J'ai un gros problème : à chaque compilation, mon compilateur (DEV Cpp 4.9.9.0) me crée deux fichiers : *private.h et *private.rc Cela a pour effet de suppression repertoire [ par yserver ] Bonjour et merci de lire mon posteEn faite j'ai 2 questions. - 1 -Est-il possible de supprimer un repertoire contenant des fichiers? Il me semble que Selection de fichiers/dossiers (WinApi ) [ par javert ] Salut,je cherche comment ouvrir une fenetre avec la WinApi permettant de parcourir l'arborescence pour selectionner un fichier ou un dossier.Je sais q explorateur windows [ par m.beber ] Salut à tous,Je vous écrits car j'ai un petit problème pour programmerune application de type "explorateur windows".Je travaille sous borland C++ Buil Algo de compression [ par PsyCaDi ] Bonjour,J'ai besoin de faire un petit prog qui me permettrait de compresser des répertoires contenant un maximum de 100 000 fichiers. J'ai des fichier Supprimer des fichiers [ par perig ] Bonjour,   <p class="MsoNormal" st Droit sur les fichiers et les dossiers [ par kanprog ] Salut. Quelqu'un peux t-il m'aider? J'aimerais pouvoir changer les droit d'accès par defaut d'un fichier ou d'un repertoire depuis un programme en c++


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales