| Lister la totalité des fichiers d'un disque dur |
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 02 Jan 2007, 01:24 Message non corrigé | |
|
Voici un petit programme qui permet de lister la totalitée les fichiers d'un disque dur.
Il est entre autre un bon exemple de programme qui utilise une fonction récursive.
Voici le code à tester en console. Il ne nessessite l'installation d'aucune librairie
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
void listerFichier (const char* dossier);
int main(void)
{
char dossier[] = "c:\\";
listerFichier (dossier);
return 0;
}
void listerFichier (const char* dossier)
{
struct dirent *lecture;
DIR *rep;
rep = opendir (dossier);
char dossierCourant[4096] = "\0", aParcourir[4096] = "\0";
int i = 0, j = 0;
FILE *fp;
strcat (dossierCourant, dossier);
i = 0;
while ((lecture = readdir (rep)))
{
strcat (aParcourir, dossier);
strcat (aParcourir, lecture->d_name);
fp = fopen (aParcourir, "r");
if (i >= 2 || strlen (dossier) <= 3) // On ne tien pas compte de "." et ".."
{
if (fp == NULL)
{
// C'est un dossier
// Préparation de l'adresse du nouveau dossier
strcat (dossierCourant, lecture->d_name);
strcat (dossierCourant, "\\");
printf ("DOSSIER: %s\n", dossierCourant);
// Je boucle la fonction sur elle-même
// pour scaner en profondeur dans les dossiers
listerFichier (dossierCourant);
// Je vide la chaine
j = 0;
while (j <= 4095)
{
dossierCourant[j] = NULL;
j ++ ;
}
strcat (dossierCourant, dossier);
}
else
{
// C'est un fichier, on l'affiche
printf ("FICHIER: %s\n", aParcourir);
fclose (fp);
}
}
// Je vide la chaine
j = 0;
while (j <= 4095)
{
aParcourir[j] = NULL;
j ++ ;
}
i++;
}
closedir (rep);
}
N'hésitez pas à modifier et à améliorer ce code.
A bientôt !
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
yoyo0073

Grade : Débutant
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 02 Jan 2007, 01:28 Message non corrigé | |
|
Bonsoir,
Super c'est exactement sa que je cherchais.
Ca va beaucoup m'aider dans mon projet.
Merci beaucoup
a+
|
|
| |
|
|
visiteur

Visiteur
|
| Ecrit le: 28 Août 2007, 11:44 Message non corrigé | |
|
bonjour
J'aimerai savoir comment lister les fichiers d'un dossier particulier avec le code source donné ci-dessus
Merci d'avance
|
|
| |
|
|
visiteur

Visiteur
|
| Ecrit le: 13 Sept 2007, 14:50 Message non corrigé | |
|
|
Personne veut repondre
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 13 Sept 2007, 15:05 Message non corrigé | |
|
C'est avec la fonction opendir() et readdir().
La source me paraît claire, non ?
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
visiteur

Visiteur
|
| Ecrit le: 14 Sept 2007, 18:28 Message non corrigé | |
|
|
Merci de m'avoir repondu le probleme c'est que la fonction liste tous les fichiers du disque dur et moi je veux lister les fichier d'un seul dossier particulier. J'ai essayé de mondifier char dossier[] = "c:\\"; par char dossier[] = "le dossier que je veux"; mais ca ne marche pas ca plante.
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 15 Sept 2007, 13:05 Message non corrigé | |
|
Qui peut le plus peut le moin, non ?
Si tu ne comprend pas ce code, même si je t'écrivais la source de ce que tu veux, tu ne pourrais pas t'en servir.
Essai de comprendre, je ne te donnerais pas plus de renseignement.
A bientôt !
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
swolf

Grade : Débutant
Inscrit le: 15 Oct 2007, 20:50
|
| Ecrit le: 17 Oct 2007, 14:09 Message non corrigé | |
|
Voici un petit programme qui permet de lister la totalitée les fichiers d'un disque dur.
Il est entre autre un bon exemple de programme qui utilise une fonction récursive.
Voici le code à tester en console. Il ne nessessite l'installation d'aucune librairie
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
void listerFichier (const char* dossier);
int main(void)
{
char dossier[] = "c:\\";
listerFichier (dossier);
return 0;
}
void listerFichier (const char* dossier)
{
struct dirent *lecture;
DIR *rep;
rep = opendir (dossier);
char dossierCourant[4096] = "\0", aParcourir[4096] = "\0";
int i = 0, j = 0;
FILE *fp;
strcat (dossierCourant, dossier);
i = 0;
while ((lecture = readdir (rep)))
{
strcat (aParcourir, dossier);
strcat (aParcourir, lecture->d_name);
fp = fopen (aParcourir, "r");
if (i >= 2 || strlen (dossier) <= 3) // On ne tien pas compte de "." et ".."
{
if (fp == NULL)
{
// C'est un dossier
// Préparation de l'adresse du nouveau dossier
strcat (dossierCourant, lecture->d_name);
strcat (dossierCourant, "\\");
printf ("DOSSIER: %s\n", dossierCourant);
// Je boucle la fonction sur elle-même
// pour scaner en profondeur dans les dossiers
listerFichier (dossierCourant);
// Je vide la chaine
j = 0;
while (j <= 4095)
{
dossierCourant[j] = NULL;
j ++ ;
}
strcat (dossierCourant, dossier);
}
else
{
// C'est un fichier, on l'affiche
printf ("FICHIER: %s\n", aParcourir);
fclose (fp);
}
}
// Je vide la chaine
j = 0;
while (j <= 4095)
{
aParcourir[j] = NULL;
j ++ ;
}
i++;
}
closedir (rep);
}
desolé mé a qoi sa sert?
p-s je debute en php
________ feel the power of PureBasic
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
|
| |
|
| |