analyse récursive des dossiers en c ++
Je veux scanner un répertoire de l'arborescence et de la liste de tous les fichiers et dossiers à l'intérieur de chaque répertoire. J'ai créé un programme qui télécharge des images de l'une webcamera, et de les enregistrer localement. Ce programme crée un filetree basé sur le temps de l'image est téléchargé. Je veux maintenant analyser ces dossiers et de télécharger les images vers un serveur web, mais Im pas sûr de savoir comment je peux scanner les répertoires pour trouver les images.
Si quelqu'un pouvait poster un exemple de code, il serait très utile.
modifier: Im l'exécution de ce sur un linux embarqué système et ne veulent pas utiliser boost
source d'informationauteur Stulli
Vous devez vous connecter pour publier un commentaire.
Voir
ftw homme
pour une simple "de l'arborescence de fichiers à pied". J'ai aussi utiliséfnmatch
dans cet exemple.(Même pas de compilation à l'essai, mais vous obtenez l'idée.)
C'est beaucoup plus simple que de traiter avec
DIRENT
s et récursive de la traversée à vous-même.Pour un plus grand contrôle de la traversée, il y a aussi
m
. Dans cet exemple, le point-files (fichiers et répertoires avec des noms commençant par ".") sont ignorés, sauf s'il est explicitement transmis au programme en tant que point de départ.Encore une fois, ce n'est ni de la compilation testé ni l'exécution testé, mais j'ai pensé que je le mentionne.
Coup de pouce.Système de fichiers vous permet de le faire. Découvrez la docs!
EDIT:
Si vous utilisez Linux et que vous ne souhaitez pas utiliser le Boost, vous devrez utiliser le natif Linux C fonctions. Cette page montre de nombreux exemples sur la façon de le faire.
Je suis de la vieille école, pas de ftw() pour moi! C'est brut (ça fait un moment depuis que je l'ai fait directement la programmation en C), et beaucoup de choses est codé en dur, et j'ai probablement foiré mes calculs de longueur pour le strnc*() fonctionne, mais vous obtenez l'idée. Il y a un exemple similaire dans le K&R btw.
Vous souhaitez utiliser les fonctions d'annuaire déclaré dans le dirent.h. Cette page wikipedia décrit et comprend des exemples de code. Pour votre application, une fois que vous avez identifié un répertoire, vous voulez appeler la fonction de traitement de nouveau de manière récursive pour traiter le contenu d'un répertoire.
Vous pouvez également utiliser glob/globfree.
Je pense que si vous pouvez utiliser Qt/Embedded, il y a QDir et QFileInfo classes qui
peut vous aider, même si cela dépend de si vous pouvez utiliser l'intervalle Qt. La question est de savoir qui de l'API de votre système.