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

 C++ Discussion :

Comment savoir si un fichier (texte) existe ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Par défaut Comment savoir si un fichier (texte) existe ?
    Bonjour à tous,

    Je travaille sur Windows XP Pro SP3 avec Visual C++ 6.0 ...

    J'ai regardé dans la FAQ et je suis tombé sur un code très intéressant à ce lien : http://cpp.developpez.com/faq/vc/ind...iers#FileExist

    Voici le code :

    Avec la fonction _access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int _access( const char *path, int mode );
    Valeurs pour mode :
    # 00 : test de l'existence uniquement
    # 02 : permission d'écriture
    # 04 : permission lecture
    # 06 : permission lecture / écriture

    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
    #include <io.h>
    #include <errno.h>
     
    //test si fichier existe
    if((_access( "troll.c", 0 )) != -1 )
    {
       printf( "Fichier troll.c existe\n" );
       // Pour permission d'écriture
       if( (_access( " troll.c ", 2 )) != -1 )
           printf( "le Fichier troll.c est ok pour l'écriture\n" );
    }
    else
    {
         switch(errno)
         {
             case EACCES :printf("accès interdit\n ");
                                     break;
            case  ENOENT:printf("fichier ou chemin incorrect \n") ;
                                      break ;
          }
    }
    Ce que je cherche à faire avec ce code, c'est l'exécuter lorsque je clic sur un bouton présent sur un dialog.

    J'ai donc ce code là (par défaut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void TTest::OnExport() 
    {
    	// TODO: Add your control notification handler code here	
    }
    Je ne comprends pas vraiment comment intégrer le code de la FAQ dans mon code présent pour mon bouton ...

    Voici mes suppositions .

    La ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int _access( const char *path, int mode );
    appelle la fonction : access

    Donc je devrais mettre que la ligne ci-dessus dans le code de mon bouton et puis en dessous du code pour le bouton je devrais mettre la suite ? ... ...

    Merci de votre aide et de votre compréhension (je débute vraiment ... jusqu'à y a 1 semaine je n'avais jamais vu un code en C++) ...

  2. #2
    Membre éclairé Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Par défaut
    Je suis en train d'avancer à petit pas ...

    Voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void TTest::OnExport() 
    {
    	// TODO: Add your control notification handler code here
     
    	//test si fichier existe
    	if((_access( "C:\README.TXT", 0 )) != -1 )
    	{
    	   AfxMessageBox("Différent de 1 - Fichier présent", MB_OK); 
    	}
    	else
    	{
    		AfxMessageBox("Egale -1 - Fichier non présent", MB_OK); 
    	}
    }
    Lorsque j'exécute mon code, je n'ai pas d'erreur (c'est déjà ça) et lorsque je clique sur mon bouton pour contrôler si le fichier existe ou pas j'obtiens toujours la même chose ...

    En effet, que mon fichier soit là ou pas ... (_access( "C:\README.TXT", 0 ) = toujours 0 ...

    Est-ce que vous savez pourquoi ? ... Merci pour votre aide ...

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par snoopy69 Voir le message
    Est-ce que vous savez pourquoi ?
    Parce que tu n'as pas pris en compte le warning que tu as eu à la compilation. Il aurait du te faire réfléchir et trouver ton bug

  4. #4
    Membre éclairé Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Parce que tu n'as pas pris en compte le warning que tu as eu à la compilation. Il aurait du te faire réfléchir et trouver ton bug


    Bonjour et merci de ta réponse ...

    Je n'ai pas de "Warning" lorsque je lance mon code ... ... ... je devrais en avoir ? ... ...

    Je débute vraiment ... ... ... ... ... ... et j'ai un peu de mal ...

    En début de code (en haut de mon fichier CPP) j'ai mis les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include  <io.h>
    #include  <stdio.h>
    #include  <stdlib.h>
    J'avais oublié de le préciser ...

    Merci vraiment pour l'aide ... ...

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Si tu as posté le même code que tu as, tu devrais avoir un warning à la compilation.

    [EDIT] Voilà ce qui m'a sauté aux yeux "C:\README.TXT"
    A la compilation, tu as du avoir : warning C4129: 'R' : unrecognized character escape sequence (visual) ou warning: unknown escape sequence '\R' (gcc) ou quelque chose de semblable avec un autre compilateur.
    Le caractère \ sert à insérer des caractères spéciaux dans les chaînes de caractère. Par exemple \t sert à insérer une tabulation. La question est comment insérer '\' dans ma chaîne alors ? Il suffit de l'échapper avec lui-même : '\\'. Donc ta chaîne devrait être : "C:\\README.TXT"

  6. #6
    Membre éclairé Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Par défaut
    Par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    warning C4129: 'R' : unrecognized character escape sequence
    Generating Code...
    ???

    Qui vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((_access( "C:\README.TXT", 0 )) != -1 )
    ???

    Alors ... si je modifie mon code comme suit :
    void TTest::OnExport()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
    	// TODO: Add your control notification handler code here
    	
    	//test si fichier existe
    	if((_access( "README.TXT", 0 )) != -1 )
    	{
    	   AfxMessageBox("Différent de 1 - Fichier présent", MB_OK); 
    	}
    	else
    	{
    		AfxMessageBox("Egale -1 - Fichier non présent", MB_OK); 
    	}
    }
    cela fonctionne ... ...

    Mais ce que je cherche à faire en faite c'est savoir si un fichier existe A UN CHEMIN SPECIFIE ...

    Par exemple j'aimerais savoir si à ce chemin : "C:\" le fichier "text.txt" existe ... ... ...

    Est-ce que c'est possible ... ??? ...

    Pourrais-tu éventuellement m'aiguiller un peu ? ... Merci beaucoup de ton aide ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2011, 16h50
  2. Comment savoir si un fichier existe sur une page web ?
    Par arketip dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 08/04/2008, 02h13
  3. Comment savoir si un fichier existe en C
    Par sympho dans le forum Linux
    Réponses: 3
    Dernier message: 16/12/2005, 06h35
  4. Comment imprimer un fichier text existant?
    Par AODRENN dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 17h26
  5. Réponses: 4
    Dernier message: 16/08/2003, 13h21

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