Je voudrais savoir comment créer en C++ sous windows un répertoire ( system ("mkdir") ????) ...Comment tester que le répertoire existe déjà et ne rien faire dans ce cas là ?
Merci.
Je voudrais savoir comment créer en C++ sous windows un répertoire ( system ("mkdir") ????) ...Comment tester que le répertoire existe déjà et ne rien faire dans ce cas là ?
Merci.
La CRT microsoft expose la fonction _mkdir(), tandis que l'API Win32 expose CreateDirectory().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je rajouterais que pour tester si le répertoire existe déjà, tu peut utiliser la fonction _stat() qui permet d'indiquer à la fois si l'"élément" est présent sur le disque et si c'est un répertoire (ou bien un fichier, un pipe, ...).
Attention : à chaque fois que tu fais un test sur l'état d'un système multitache, au moment où tu as le résultat il peut être déjà obsolète.
De façon générale, il est inutile, redondant et créateur de faux espoirs d'utiliser access avant d'ouvrir un fichier pour vérifier si on le droit d'y accéder. Le plus simple, et plus sûr est d'essayer d'y accéder directement. Je ne comprends pas ceux qui s'embêtent avec access.
C'est aussi pour ça qu'il faut utiliser open avec O_CREAT|O_EXCL pour être sûr de créer un fichier, et pas risquer d'ouvrir un fichier existant. (Et donc, il faut utiliser open et pas creat pour créer un fichier.)
Concernant _mkdir, je citerai la doc MS :
donc pas besoin de tester l'existence d'un fichier de même nom avant (enfin, d'après ce que je comprends; il n'est pas explicitement décrit ce que _mkdir fait si un fichier de même nom existe déjà - mais je pense que c'est suffisamment clair).Envoyé par MSDN : _mkdir, _wmkdir
Partager