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,
Lire des répertoires
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 cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Semperis : gouverner l’identité à l’ère des agents IA
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Akamai Technologies déploie sa stratégie de protection en ligne
Articles les + lus
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
À la une de la chaîne Tech
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
