Comment fait-on pour vérifier l'existance d'un fichier ?
Merci
Je cherche des cours sur la manipulation des fichiers txt et xml
Version imprimable
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:
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 :Citation:
Envoyé par benhoh
Car un cast de *stream vers bool indique si le flux en question est en état d'erreur ou non.Code:
1
2
3
4
5
6
7
8 #include <fstream> bool exist(char const *file) { ifstream f(file); return f; }
--
Loïc
N'oublie pas la fin de la balise code Loic.
Et bienvenu sur ce lieu de débauche. ;)
Oups...Citation:
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.Citation:
Envoyé par Luc Hermitte
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 ?Citation:
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é.Citation:
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.
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