Effacer un répertoire et tout son contenu

Problème

Vous souhaitez supprimer récursivement un répertoire et tous ses fichiers et sous-répertoires.

Solution

Appliquez la recette précédente en supprimant d’abord les fichiers en guise de traitement des fichiers, puis les répertoires après les avoir traités récursivement.

Discussion

La fonction rmdir(), contrairement à son équivalent en ligne de commande Unix avec l’option -r, ne permet pas de supprimer un répertoire non vide. Il faut donc le vider avant de faire appel à rmdir(). Nous sommes donc obligés d’appliquer la recette précédente afin de, pour chaque sous-répertoire, supprimer récursivement son contenu. Voici les modifications à appliquer à l’exemple de la recette précédente :


void action_dir (const char *dir) { } 
void action_dir_pre (const char *root, const char *dir) { } 
 
void 
action_dir_post (const char *root, const char *dir) 
{ 
  if (rmdir (dir)) 
    { 
      fprintf (stderr, "Impossible de supprimer le répertoire %s/%s " 
                       "(errno = %s)\n", root, dir, stderror (errno)); 
      exit (EXIT_FAILURE); 
    } 
} 
 
void 
action_file (const char *file) 
{ 
  if (unlink (file)) 
    { 
      fprintf (stderr, "Impossible de supprimer le fichier %s " 
                       "(errno = %s)\n", file, stderror (errno)); 
      exit...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Effectuer une opération récursivement sur tous les fichiers d'un répertoire et de ses sous-répertoires
Suivant
Obtenir des informations sur un fichier