Liste récursive des fichiers contenue dans un dossier
Résolu/Fermé
Utilisateur anonyme
-
Modifié par astrocurieux le 22/06/2016 à 12:24
Utilisateur anonyme - 29 juil. 2016 à 09:37
Utilisateur anonyme - 29 juil. 2016 à 09:37
A voir également:
- Liste récursive des fichiers contenue dans un dossier
- Liste déroulante excel - Guide
- Mettre un mot de passe sur un dossier - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Dossier appdata - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
hopelan
Messages postés
95
Date d'inscription
dimanche 12 juin 2016
Statut
Membre
Dernière intervention
16 janvier 2018
17
1 juil. 2016 à 14:27
1 juil. 2016 à 14:27
Bonjours,
Pour ton problème, je pense que tu te complique la tâche. Si tu veut seulement loguer dossier par dossier avec un log dans chaque dossier, et bien tu peut reprendre les algos du recherche de fichier.
L'idée c'est d'optimiser les ressources avec du multithreading.
=> Tu crée une fonction "BrowseFolder(std::string& path)" qui parcourt le dossier renseigné en chemin, crée un fichier log.txt et y inscrit l'ensemble des fichiers et dossiers trouvés (via d'autres fonction éventuellement pour alléger le code)
=> Ensuite, si cette fonction trouve un dossier, elle démarre un nouveau thread dans lequel elle s’appelle avec en paramètre le chemin de ce dossier. Elle continue ensuite sa boucle sur les fichiers jusqu’à qu'il ne reste aucun fichiers ou dossier. Une fois qu'elle termine, le thread dépile et se ferme jusqu’à ce qu'il ne reste plus que le thread principal. Et la tu fait ce que tu veut pour la fin du programme.
(bien sur le multitread est facultatif, la fonction peut très bien s'appeler elle même sans nouveau thread mais c'est moins rapide bien que ce soit moins énergivore.)
Pour ton problème, je pense que tu te complique la tâche. Si tu veut seulement loguer dossier par dossier avec un log dans chaque dossier, et bien tu peut reprendre les algos du recherche de fichier.
L'idée c'est d'optimiser les ressources avec du multithreading.
=> Tu crée une fonction "BrowseFolder(std::string& path)" qui parcourt le dossier renseigné en chemin, crée un fichier log.txt et y inscrit l'ensemble des fichiers et dossiers trouvés (via d'autres fonction éventuellement pour alléger le code)
=> Ensuite, si cette fonction trouve un dossier, elle démarre un nouveau thread dans lequel elle s’appelle avec en paramètre le chemin de ce dossier. Elle continue ensuite sa boucle sur les fichiers jusqu’à qu'il ne reste aucun fichiers ou dossier. Une fois qu'elle termine, le thread dépile et se ferme jusqu’à ce qu'il ne reste plus que le thread principal. Et la tu fait ce que tu veut pour la fin du programme.
(bien sur le multitread est facultatif, la fonction peut très bien s'appeler elle même sans nouveau thread mais c'est moins rapide bien que ce soit moins énergivore.)
1 juil. 2016 à 14:46
plutôt.
29 juil. 2016 à 09:37
je suis desolé de mon temps de reaction pour vous repondre.
je n'avait pas pensé au tread, c'est une bonne idée que je garde en téte.
mon algo fonctionne deja sur la base du recurcif, mais comporte quelque bug que je doit encore résoudre .
je reviendrais vers vous quand j'aurais de nouveau ce programme en téte.