OVH Cloud OVH Cloud

Gestion de fichiers et de répertoires

13 réponses
Avatar
Nicolas ROBERT
Bonjour,

Je développe un programme qui, notamment,doit permettre d'ouvrir ou
d'enregistrer des fichiers dans une arborescence qu'il a créée.
Je débute en C++, je ne sais donc pas trop comment m'y prendre. J'ai déjà
réussi à gérer les fichiers (fichier éxiste ? si non créer, si oui
écraser), et je cherche maintenant à gérer des répertoires (éxiste ?| créer
| suprimer).

Il me faut préciser que je développe sous windows ( j'ai aussi envoyé ce
message sur fr.comp.os.ms-windows.programation).

Pour résumer, je recherche de la documentation, ou un tuto, ou un bout de
code éxistant, permettant cette gestion de répertoire.
Toutes les idées seront les bienvenues...

Merci d'avance.

3 réponses

1 2
Avatar
Nicolas ROBERT
aucune gestion portable des répertoires en C++ (un système pourrait très
bien NE PAS avoir de répertoires...)
Sous Windows tu peux utiliser, avec borland C++, les fonctions de
l'en-tete

dir.h comme mkdir (créer un dossier) etc...
Il existe aussi (HS ici) les API Win32 de gestion de dossiers (voir SDK
Win32).
Merci de ta réponse.

En l'occurrence, je dev sous VC++ 6. Le fichier entête dir.h n'y éxiste pas.
Crois-tu qu'il serait possible de le récupérer et de l'intégrer à mon
environnement ?

Avatar
Pierre Maurette
"Nicolas ROBERT" typa:

aucune gestion portable des répertoires en C++ (un système pourrait très
bien NE PAS avoir de répertoires...)
Sous Windows tu peux utiliser, avec borland C++, les fonctions de
l'en-tete

dir.h comme mkdir (créer un dossier) etc...
Il existe aussi (HS ici) les API Win32 de gestion de dossiers (voir SDK
Win32).
Merci de ta réponse.

En l'occurrence, je dev sous VC++ 6. Le fichier entête dir.h n'y éxiste pas.
Crois-tu qu'il serait possible de le récupérer et de l'intégrer à mon
environnement ?
Sous VC++ 6, c'est la famille _findfirst(), _findnext() et

_findclose(), vous devez inclure io.h.
Vous pouvez également utiliser les API FindFirstFile(),
FindFirstFileEx(),FindNextFile(), FindClose(), etc.
La façon de travailler est à à peu près la même avec les deux groupes.
La findfirst renvoie un identificateur (handle) qui permet de bosser
avec les findnext et findclose. Les findfirst et findnext prennent en
argument une chaine comme "*.*" par exemple, et une structure
appartenant à l'appelant. Cette structure vous permet de "tout" savoir
sur ce qui a été trouvé, nom, attributs, s'il s'agit d'un répertoire
ou d'un fichier (important).
Vous serez certainement amené à écrire une routine permettant de
parcourir toute l'arbrescence contenue dans un répertoire par appel
récursif.
Les fonctions de répertoire ne PEUVENT être standard en C ou C++ (les
fonctions citées sont plutôt du C). Avec la première série, vous
facilitez un portage éventuel vers d'autres OS. Avec la seconde, le
portage est trivial, ou au moins facile, si vous restez sous Windows,
même vers d'autres langages que C ou C++.
Enfin, certaines bibliothèques propriétaires comme la VCL Borland en
proposent une version (plus C++). C'est une encapsulation des API
Windows d'utilisation agréable, surtout en addition de routines de
gestion de noms de fichiers par exemple. Plus portable du tout ... Je
ne connais pas ce que propose VC++6.

Si vous avez installé le MSDN Library en même temps que VS6, vous avez
tout sous la main. Sinon, faut chasser la doc.
--
Pierre


Avatar
Christophe de VIENNE
Nicolas ROBERT wrote:
Merci quand même à Fabien Le Lez et Christophe de Vienne ( christophe, une
simple vérification sur le news windows t'aurais permis de vérifer
qu'effectivement, je n'avais PAS fait de multipostage).


En effet, toutes mes excuses.

A+

Christophe

--
Christophe de Vienne

1 2