IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Test l'existence d'un fichier simplement


Sujet :

Langage C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut Test l'existence d'un fichier simplement
    Bonjour,

    J'essaye de trouver une méthode simple pour tester l'existence d'un fichier sans passer par une libraire mais je n'y arrive pas. J'ai essayé le bout de code donné dans la faq C++ de developpez.com mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <fstream>
    #include <string> 
    #include <iostream>
     
    bool is_readable( const std::string & file ) 
    { 
        std::ifstream fichier( file.c_str() ); 
        return !fichier.fail(); 
    } 
     
    void Exemple()
    {
        using std::cout;
        if ( is_readable( "fichier.txt" ) ) 
        { 
            cout << "Fichier existant et lisible.\n"; 
        } 
        else 
        { 
            cout << "Fichier inexistant ou non lisible.\n"; 
        } 
    }
    Je travaille sous windows avec Visual Studio.

    Auriez-vous d'autres solutions ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    C++ de developpez.com mais ça ne fonctionne pas.
    C'est à dire ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Bonsoir,

    attention, vérifier qu'on peut lire un fichier n'est pas équivalent au fait de vérifier que le fichier existe
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 107
    Billets dans le blog
    146
    Par défaut
    Bonjour,

    Je crois que la fonction 'stat()' peut vous servir, mais on s'éloigne un peu du contexte c++.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Bonjour,
    Citation Envoyé par LittleWhite Voir le message
    on s'éloigne un peu du contexte c++.

    mais c'est quoi cette idée qui fait qu'il faudrait banir tout ce qui existait déjà dans C ?
    je suppose que vous avez le même problème lorsque vous utilisez int, ou lorsque vous faites une addition ?
    le fait qu'on ai accès à ce qui existait déjà dans C n'est pas une faiblesse, c'est très exactement le contraire
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Je crois que la fonction 'stat()' peut vous servir, mais on s'éloigne un peu du contexte c++.
    Ca marche très bien avec un code du type suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <sys/stat.h>
    ...
    struct stat results;
     
        if (stat("input.bin", &results) == 0)
            // The size of the file in bytes is in
            // results.st_size
        else
            // An error occurred
    Merci pour vos réponses.

  7. #7
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    Bonjour,


    mais c'est quoi cette idée qui fait qu'il faudrait banir tout ce qui existait déjà dans C ?
    je suppose que vous avez le même problème lorsque vous utilisez int, ou lorsque vous faites une addition ?
    le fait qu'on ai accès à ce qui existait déjà dans C n'est pas une faiblesse, c'est très exactement le contraire
    L'idée à la base est de virer tout ce qui vient du C et d'utiliser les équivalents que C++ nous offre. Dans les cas où il n'y a pas d'équivalent direct, il faut le construire.

    Ici stat (hormis le fait qu'elle ni standard ni portable hors des système posix) utilise des pointeurs de structure. Il est plus propre de se construire une classe autour encapsulant tout ca.

    Sinon, boost::filesystem powa !!!
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  8. #8
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 641
    Par défaut
    Salut,

    Le fait est que ce qui est issu de C++ est très souvent beaucoup plus sécurisant à l'usage que son équivalent issu de C.

    L'idée est donc *relativement simple* et consiste à ce dire qu'un débutant pourra faire mieux (en terme de sécurité) et plus rapidement en utilisant ce qui est issu de C++.

    Par la suite, il n'est pas *interdit* d'utiliser ce qui est issu de C, mais il est *fortement conseillé* de l'éviter autant que possible, et de ne le faire que
    • quand on sait exactement ce que l'on fait
    • quand on n'a pas d'autre choix (quelles que soient les raisons qui font que l'on ne l'ait pas)


    Enfin, stat fait, effectivement, partie des fonctions posix et n'est donc pas supportée par les systèmes de chez microsoft... Et c'est souvent un problème supplémentaire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    Bonjour,


    mais c'est quoi cette idée qui fait qu'il faudrait banir tout ce qui existait déjà dans C ?
    je suppose que vous avez le même problème lorsque vous utilisez int, ou lorsque vous faites une addition ?
    le fait qu'on ai accès à ce qui existait déjà dans C n'est pas une faiblesse, c'est très exactement le contraire
    Aucun rapport avec le fait que ça vienne du C. C'est juste que c'est pas portable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FTP] Test de l'existence d'un fichier distant
    Par helww dans le forum Langage
    Réponses: 6
    Dernier message: 06/08/2007, 15h00
  2. Test sur existence Fichier
    Par blackstreet dans le forum Réseau
    Réponses: 12
    Dernier message: 25/07/2006, 13h24
  3. test de l'existence d'un fichier
    Par liozber dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/06/2006, 16h27
  4. [FTP] Test de l'existence d'un fichier sur un serveur ftp
    Par lapartdombre dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 01/08/2005, 14h13
  5. [C++ .NET] Test existence d'un fichier
    Par remixxl dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 26/07/2004, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo