Comment fait-on pour vérifier l'existance d'un fichier ?
Merci
Je cherche des cours sur la manipulation des fichiers txt et xml
Comment fait-on pour vérifier l'existance d'un fichier ?
Merci
Je cherche des cours sur la manipulation des fichiers txt et xml
dans la faq c++, le code suivant est donné:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <fstream> #include <stdlib.h> using namespace std; ifstream fichrestaure; fichrestaure.open ("fichier.txt",ios::in); if (fichrestaure.is_open ()) { cout << "fichier existant"; } else { cout << "fichier non existant"; }
Il y a une fonction access, ou _access suivant les compilateurs.
sinon, en stream :
En fait, le code suivant suffit :Envoyé par benhoh
Car un cast de *stream vers bool indique si le flux en question est en état d'erreur ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <fstream> bool exist(char const *file) { ifstream f(file); return f; }
--
Loïc
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
N'oublie pas la fin de la balise code Loic.
Et bienvenu sur ce lieu de débauche.![]()
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Oups...Envoyé par Luc Hermitte
Merci, mais je sais pas si je vais rester. En ce moment, j'ai du temps, je suis en congés, mais autrement, je trouve pour l'instant que c'est plus long à consulter ou à répondre que les news.Envoyé par Luc Hermitte
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
la notation ifstream f(file); permet juste de savoir si le fichier peur etre ouvert, pas s'il existe. S'il est ouvert en exclusif par une autrre application, ifstream f(file) est en errreur.
Comment peut-on ouvrir un fichier qui n'existe pas ?Envoyé par bjousse
La FAC C++ est en cours de révision, la remarque de Loic a été prise en compte. Elle sera probablement intégrée à la prochaine version de la FAQ (avec sûrement un std::string à la pace d'un char *).
edit : je comprend maintenant le sens de ta remarque : exist devrait renvoyer true même si le fichier ne peut être lu. Je ne crois pas que l'on puisse texter l'existance d'un fichier en C++ standard. Du coup je pense que la FAQ fera aussi état de ta remarque, peut être que la fonction sera renommée en is_readable.
Merci à vous deux.
Effectivement. Il n'y a pas de fonction pour ça en C++ standard. Il y a boost::filesystem qui fourni ça, je n'ai pas vraiment essayé.Envoyé par bjousse
De toute façon, l'utilité ne me semble pas énorme. Souvent, quand les gens demandent ça, c'est pour être certains de ne pas écraser un fichier avant de l'écrire. Mais rien ne dit que le fichier n'a pas été crée entre le moment où l'on interroge le système et celui où l'on ouvre le fichier. C'est un peu tordu, mais c'est le genre de problèmes auquels on est confrontés quand on a à faire à une ressource partagée come le système de fichier.
http://www.boost.org/libs/filesystem...Race-condition pour plus d'infos.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Oui, j'ai aussi pensé à boost. Mais comme tu le dis l'idée est d'avoir une solution simple qui marche pas trop mal, sans bibliothèques annexes. L'utilisation de boost donnera peut être lieu à un nouveau chapitre de la FAQ, si des rédacteurs sont motivés.
je reviens à mon premier post :
Il y a une fonction access, ou _access suivant les compilateurs.
pas normalisé, mais très courant (je l'ai même sur MVS) et ca permet de résoudre les problèmes de fichier locke ou autre
Partager