Lister des dossiers
liam
-
vincent -
vincent -
bonjour tout le monde!
J'ai fais un peit prog pour lister mes cd de donnees. Je veux pouvoir mettre mon cd dans mon pc et ensuite avec mon prog, je veux pouvoir creer un fichier qui va contenir une sorte de mini base de donnee. Le prog marche tres bien quand je l'applique sur un dossier sur le disque dur, il parcours bien recursivement tous les dossiers. Par contre, quand je l'applique sur un cd, il ne marche pas recursivement... Voici la fonction quiparcours les dossiers et stocke mes fichiers dans une liste. Qqun pourait il m'aider?
voila, dsl pour l'indentation!
J'ai fais un peit prog pour lister mes cd de donnees. Je veux pouvoir mettre mon cd dans mon pc et ensuite avec mon prog, je veux pouvoir creer un fichier qui va contenir une sorte de mini base de donnee. Le prog marche tres bien quand je l'applique sur un dossier sur le disque dur, il parcours bien recursivement tous les dossiers. Par contre, quand je l'applique sur un cd, il ne marche pas recursivement... Voici la fonction quiparcours les dossiers et stocke mes fichiers dans une liste. Qqun pourait il m'aider?
static std::vector<t_data> create_FileList(std::string path, std::vector<t_data> list)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
std::string tmp;
tmp = path + "\\*";
hFind=FindFirstFile(tmp.c_str(), &FindFileData);
do
{
if (strcmp(FindFileData.cFileName, ".")
&& strcmp(FindFileData.cFileName, "..")
&& (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_HIDDEN))
{
if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
{
t_data data;
data.name = (LPCTSTR)FindFileData.cFileName;
data.dir = path;
data.type = "DIR";
list.push_back(data);
tmp = path + "\\" + (LPCTSTR)FindFileData.cFileName;
list = create_FileList(tmp, list)
}
else
{
t_data data;
data.name = (LPCTSTR)FindFileData.cFileName;
data.dir = path;
data.type = "FILE";
list.push_back(data);
}
}
}
while ( FindNextFile(hFind, &FindFileData) );
FindClose(hFind);
return list;
}
voila, dsl pour l'indentation!
A voir également:
- Lister des dossiers
- Lister les disques cmd - Guide
- Afficher la taille des dossiers windows 11 - Guide
- Liste des appareils connectés - Guide
- Vous devez disposer des droits d'administrateur pour supprimer ce dossier - Guide
- Excel validation des données liste - Guide
9 réponses
Salut, moi il y a un truc qui me tracasse dans ton code (autre que l'indentation :-D), c'est que je ne vois pas ou il peut etre recursif!!!
Tu es sur qu'il est recursif sur C:? 8-)
A mon avis pour chacune de tes directories (donc dans ton while), il faut que tu refasses appel a ta fonction...
. .
\_/
Tu es sur qu'il est recursif sur C:? 8-)
A mon avis pour chacune de tes directories (donc dans ton while), il faut que tu refasses appel a ta fonction...
. .
\_/
Heeeeeeuuuuuuu
Slt teebo,
si si il est recursif, je fais appel a ceci:
list = create_FileList(tmp, list);
des que je trouve un dossier, c'est a dire des que:
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY.
La recursivite marche bien sur mon disque dur, mais elle ne marche pas quand je veux l'appliquer sur un cd... relou :(
si si il est recursif, je fais appel a ceci:
list = create_FileList(tmp, list);
des que je trouve un dossier, c'est a dire des que:
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY.
La recursivite marche bien sur mon disque dur, mais elle ne marche pas quand je veux l'appliquer sur un cd... relou :(
Oops, autant pour moi je n'avais pas vu...Tu as essaye avec un breakpoint sur celle ligne la?
. .
\_/
. .
\_/
Heeeeeeuuuuuuu
ben oui, et il ne rentre pas dans la premiere condition, ni dans la seconde... donc il ne les considere ni comme des dossiers, ni comme des fichiers... il ne me reste qu'a lui dire via mon directory browser de rentrer dans chaque dossier a la main... C'est tjrs une solution mais c'est vrai que ca aurait ete mieux si ca c'etait fait tt seul. Je continue qd meme a chercher un peu. Dans tous les cas, merci pour ton aide!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu peux peut etre essayer avec ca non?
CFileFind::IsDirectory
BOOL IsDirectory( ) const;
. .
\_/
CFileFind::IsDirectory
BOOL IsDirectory( ) const;
. .
\_/
Heeeeeeuuuuuuu
ca marche! Merci beaucoup teebo! En plus c bien plus simple
que la methode que j'utilisais avant...
liam
Etudiant en info (EPITA)
que la methode que j'utilisais avant...
liam
Etudiant en info (EPITA)
slt gisles,
mon programme me sert a gerer mes mp3. Il cree un liste de tous mes mp3 (et pour cela, je dois inserer un par un tous mes cd de mp3), et il me permet de faire un recherche dans cette liste. J'en avais marre de pas savoir ce qu'il y avait sur mes cd... Maintenant c'est regle ;)
liam
Etudiant en info (EPITA)
mon programme me sert a gerer mes mp3. Il cree un liste de tous mes mp3 (et pour cela, je dois inserer un par un tous mes cd de mp3), et il me permet de faire un recherche dans cette liste. J'en avais marre de pas savoir ce qu'il y avait sur mes cd... Maintenant c'est regle ;)
liam
Etudiant en info (EPITA)