Connaître le contenu d’un répertoire

Problème

Vous voulez connaître les noms des fichiers et des répertoires contenus dans un répertoire.

Solution

Servez-vous des fonctions opendir(), readdir() et closedir(). Utilisez-les de manière récursive dans les sous-répertoires si vous voulez aussi les parcourir.

Discussion

L’utilisation d’opendir() est simple. La difficulté réside dans ce que nous souhaitons faire des noms des fichiers et des répertoires obtenus avec readdir(). Voici un cas d’école, un exemple qui affiche les noms des fichiers et sous-répertoires d’un répertoire :


int 
printdir (char *dirname) 
{ 
  DIR *FD; 
  struct dirent *f; 
 
  if (NULL == (FD = opendir (dirname))) 
    { 
      fprintf (stderr, "opendir() impossible\n"); 
      return (-1); 
    } 
  printf ("%s :\n", dirname); 
  while ((f = readdir (FD))) 
    { 
      printf ("  %s\n", f->d_name); 
    } 
  closedir (FD); 
  return (0); 
}
 

Dans la boucle qui affiche les fichiers et répertoires, recourez à la recette "Obtenir des informations sur un fichier" pour afficher plus que le nom des fichiers, en particulier s’il s’agit d’un fichier ou d’un répertoire. Cela permet, pour parcourir le répertoire de manière récursive, de réitérer le processus sur les répertoires ainsi...

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
Introduction
Suivant
Effectuer une opération récursivement sur tous les fichiers d'un répertoire et de ses sous-répertoires