> Tech > Lire des répertoires

Lire des répertoires

Tech - Par iTPro - Publié le 24 juin 2010
email

Pour extraire la liste des fichiers d’un répertoire, on utilise quatre API différentes : opendir (), readdir (), rewinddir () et closedir ().

L’API opendir () ouvre un répertoire afin que vous puissiez le lire. C’est comparable à ouvrir un fichier stream avec l’API open () excepté que,

bien entendu, elle ouvre un répertoire au lieu d’un fichier.

Elle accepte un paramètre, le nom de chemin du répertoire que vous voulez ouvrir. Elle renvoie un pointeur vers un « handle de répertoire ». Les API de répertoire utilisent ce pointeur pour suivre le répertoire particulier que vous avez ouvert. C’est semblable au concept « descripteur de fichier » que j’ai décrit dans le premier article de cette série.

L’API readdir () lit l’entrée de répertoire suivant dans le répertoire. Vous devez passer le handle de répertoire que vous avez extrait de l’API opendir (), afin que readdir () sache quel répertoire ouvert vous voulez lire. Cette API renvoie un pointeur vers une structure de données qui contient des informations sur chaque fichier présent dans le répertoire.

La figure 5 montre la structure de données vers laquelle l’API readdir () renvoie le pointeur. Cette structure de données est définie dans le copy book IFSIO_H, dont vous pouvez utiliser le mot-clé LIKEDS de RPG pour la référencer à partir de vos programmes. Bien que la structure de données d’entrée de répertoire contienne un grand nombre de champs, généralement les champs d_name et d_namelen sont les seuls utiles en programmation RPG.

L’API rewinddir () accepte comme son seul paramètre le handle de répertoire que renvoie opendir (). L’API rewinddir () remonte au début du listing de répertoires, de telle sorte que le prochain appel adressé à readdir () extraira à nouveau la première entrée du répertoire.

L’API closedir () ferme un répertoire ouvert. N’oubliez pas de fermer chaque répertoire dès que vous ne l’utilisez plus. En effet, les répertoires ne se ferment pas automatiquement à la fin du programme : si vous oubliez de fermer un répertoire, il reste ouvert jusqu’à la fin du groupe d’activation ou à la fin de votre job. Si cela se produit plusieurs fois, vous pourriez recevoir une erreur signalant qu’il y a trop de fichiers ouverts. Heureusement il est facile d’éviter ce problème : en n’oubliant pas d’appeler closedir ().

Le programme exemple READDIR (figure 6) démontre la lecture du contenu d’un répertoire à partir d’un programme RPG. Il commence par appeler l’API opendir () pour ouvrir le répertoire afin qu’il puisse être lu (A en figure 6). Une fois le répertoire ouvert, le programme appelle l’API readdir () en boucle pour extraire toutes les entrées de répertoire (B en figure 6). Quand le programme atteint la fin de la liste, l’API readdir () renvoie la valeur spéciale *NULL pour indiquer que le programme a atteint la fin du répertoire. La figure 7 montre la sortie affichée à l’écran quand le programme readdir () est exécuté.

Téléchargez gratuitement cette ressource

Comment cerner la maturité digitale de votre entreprise ?

Comment cerner la maturité digitale de votre entreprise ?

Conçu pour les directions IT et Métiers, ce guide vous permettra d'évaluer précisément vos processus de communication client, d'identifier vos lacunes et points d'inflexion pour établir un plan d’actions capable de soutenir durablement votre évolution. Bénéficiez maintenant d'une feuille de route complète.

Tech - Par iTPro - Publié le 24 juin 2010