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

Windows Forms Discussion :

Lister les fichiers d'un dossier


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut Lister les fichiers d'un dossier
    Bonjour à tous,
    Je débute en C# alors ma question peut peut etre vous sembler évidente.
    J'ai pas mal cherché sur internet des tutoriels pour résoudre mon problème mais sans succès.

    Alors en fait je cherche à savoir le contenu d'un dossier car:
    Je souhaite que mon application crée un nouveau fichier et je souhaite vérifier que le nom n'existe pas déjà.

    J'ai entendu parlé lors de mes recherches de FolderOpenDialog, sauf que je n'arrive pas à l'utiliser, j'ai des erreurs du type folderopendialog n'est pas définie.

    Alors j'aimerais si possible des explications quant à l'utilisation de cette fonction. Cela m'aidera aussi pour la compréhension générale de la structure du C# je pense.

    J'avoue avoir un peu de mal à organiser mes fichiers et à savoir ou mettre mon code alors surement qu'en ayant la solution à ce problème, ces petits problèmes devraient partiellement s'éclairer.

    Merci d'avance, r0seBa

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Le FolderOpenDialog, ca n'existe pas

    Tu a le FolderBrowserDialog mais qui ne sert pas a ce que tu cherche
    Tu a le OpenFileDialog qui ne sert pas non plus a ce que tu cherche
    Et le Directory.Getfiles(); qui devrait t'aider
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Voici un petit bout de code qui vérifie si le dossier existe, qui le crée en cas de besoin et qui liste le contenu du dossier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    internal static string[] GetFileList()
            {
                if (!Directory.Exists(Path.GetFullPath("MonDossier")))
                {
                    Directory.CreateDirectory(Path.GetFullPath("MonDossier"));
                }
                return Directory.GetFiles(Path.GetFullPath("MonDossier"));
            }
    La fonction crée le dossier au même endroit que l'exécutable de ton programme.

    Pour OpenFileDialague, je te conseil de jeter un œil ici.

    Voila bonne journée.

    PS: si tu as des questions à propos du code hésite pas .
    Entre la culture des perles fines et ceux qui perlent l'inculture, un point commun domine : c'est le QI de l'huître !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par r0seBa Voir le message

    Alors en fait je cherche à savoir le contenu d'un dossier car:
    Je souhaite que mon application crée un nouveau fichier et je souhaite vérifier que le nom n'existe pas déjà.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FileInfo myFile = new FileInfo(NomDuFichierComplet);
    FileStream streamFile;
    if(!myFile.Exists)
    {
          streamFile=myFile.Create();
          streamFile.Close();
    }

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    Oui autant pour moi je voulais dire FolderBrowserDialog enfin bref.

    J'ai des questions concernant le premier code qui a été proposé:
    -Il est marqué dans le code Full Path, alors quel chemin je met pour mon dossier? Le chemin complet (c:\Programmes\...\chemin) ou alors le chemin à partir du dossier ou se trouve mon executable? (\chemin )
    EDIT: Je viens d'avoir la réponse à ma question en cherchant sur internet
    -Comment ensuite vérifier les noms ?


    J'ai donc copié ce code dans une de mes fonctions, la fonction head_menu_1_Click et cela m'amène 11 erreurs. (Je n'ai pas encore remplacé monDossier par le chemin de mon dossier j'attend de corriger les erreurs )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                this.accueil_text.Visible = false;
                internal static string[] GetFileList()
            {
                if (!Directory.Exists(Path.GetFullPath("MonDossier")))
                {
                    Directory.CreateDirectory(Path.GetFullPath("MonDossier"));
                }
                return Directory.GetFiles(Path.GetFullPath("MonDossier"));
            }
    après le point virgule de la première ligne il me dit qu'une accolade est attendue.

    Il me dit terme d'expression non valide 'internal'.
    Il me souligne static et me dit ; attendu

    Je pense que le seul problème c'est que je n'ai pas mis ce bout de code au bon endroit?
    Je ne peux pas le mettre directement dans une de mes fonctions?



    Merci.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Ce que je t'ai donner est une fonction donc si tu veux utiliser il faut faire un appel de fonction , dans ce cas ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string [] myString = GetFileList()
    ou alors tu le met direct dans ton code et la il te suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!Directory.Exists(Path.GetFullPath("MonDossier")))
                {
                    Directory.CreateDirectory(Path.GetFullPath("MonDossier"));
                }
                string [] myString = Directory.GetFiles(Path.GetFullPath("MonDossier"));

    Tes erreurs viennent probablement du fait que tu déclare une fonction au mauvais endroit.
    Entre la culture des perles fines et ceux qui perlent l'inculture, un point commun domine : c'est le QI de l'huître !

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Arsou :

    RoseBa parle de tester l'existence d'un fichier !

    Je souhaite que mon application crée un nouveau fichier et je souhaite vérifier que le nom n'existe pas déjà.
    Le code de NejNej est correct pour tester l'existence d'un fichier

    Et par ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Directory.GetFiles("nomdudirectory");
    Rends un array de string des noms de fichier dans le directory donné
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par olibara Voir le message
    Arsou :

    RoseBa parle de tester l'existence d'un fichier !



    Le code de NejNej est correct pour tester l'existence d'un fichier
    Oups je suis tête en l'air sur ce coups la :s
    mais je suis pas tomber loin ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File.Exists(NomCompletDuFichier);
    renvoie True ou False selon l'existance ou non du fichier;

    Citation Envoyé par olibara Voir le message
    Et par ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Directory.GetFiles("nomdudirectory");
    Rends un array de string des noms de fichier dans le directory donné
    J'ai jamais prétendus le contraire
    Entre la culture des perles fines et ceux qui perlent l'inculture, un point commun domine : c'est le QI de l'huître !

  9. #9
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut
    Alors là je passe vraiment pour une bille avec cette histoire de fonction ^^ c'est comme ça qu'on apprend diras-t-on, enfin en tout cas je vous remercie de savoir m'expliquer et donc m'aider àcomprendre.

    Cependant j'ai essayé de stocker le résultat dans une variable puis de l'afficher et je n'y arrive pas. Le type retourné est de type Array à ce que j'ai compris, j'ai donc essayé plusieurs trucs, pour le moment j'en suis encore à essayer de faire marcher par tatonnement ça va finir par rentrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var variable = Directory.GetFiles(Path.GetFullPath("database"));
     
     
     
     
            this.accueil_titre.Text = variable[1];
    Ceci me renvoit quelque chose, et c'est le seul moyen que j'ai trouvé pour stocker le résultat sous forme de variable mais quand on prend variable[2], cela ne fonctionne plus. Alors c'est là que j'ai (de nouveau) besoin de votre aide. Comment stocker le résultat dans une variable?


    D'ailleurs ça m'amène à me poser une question, si le tout est stocké dans un array ça veut dire que chaque rang de l'array correspondra à un fichier? Mais alors comment savoir à quel rang s'arreter pour avoir fait tous les fichiers?

    Sinon en ce qui concerne l'autre solution, je remplace nomcompletdufichier par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "database\\fichier.txt"
    ?

    Mes questions peuvent sembler vraiment bete, mais j'ai fait beaucoup de développement web avant, j'ai donc un peu de mal à assimiler cette nouvelle syntaxe/ organisation qui change quand meme pas mal du php


    Merci

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour
    le baba des tableaux :

    Si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string []mesFichiers=Directory.GetFiles("mondirectory");
    tu recupere un tableau (array) de string;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mesFichiers.Length;  // te donne le nombre d'éléments dans le tableau
    Tu peux avoir des tableau de tout ce que tu veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int []monint=new int[20];   // un tableau de int
    string []monstring=new string[12]; // un tableau de 12 string

    Etc..
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #11
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut
    Ah voilà tout s'explique merci, j'avais un peu de mal avec cette nouvelle notation pour les arrays.

    D'ailleurs quand on récupère la longueur c'est une variable de type int, j'ai réussi à l'afficher en la convertissant en string avecv system.convert.tostring, c'est la seule méthode?

    Ensuite, j'ai testé, j'ai mis un fichier dans le dossier prévu, j'ai testé avec length il me dit bien qu'il y a qu'un seul fichier, mais je n'arrive pas à en afficher le nom désormais :s

    J'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String []mesFichiers = Directory.GetFiles(Path.GetFullPath("databases"));
                int longueur = mesFichiers.Length;
     
     
     
            this.accueil_titre.Text = mesFichiers[1];
    Sachant que le rang 0 me donne un truc du genre C:/User/Document/, rien de plus.

    Merci de votre aide, j'ai l'impression de cerner de mieux en mieux les problèmes

  12. #12
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Tu a partout la methode .ToString() qui te permet d'avoir la chaine associée a un objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonArray.Length.Tostring();
    Pour tes fichier je ne sais pas, il faut voir ce que te donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Path.GetFullPath("databases");
    Mais de toute façon il manque le filtre wildcard *.* pour avoir une liste

    Et comme rien ne vaut l'experience, tu n'a qu'a essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String []mesFichiers = Directory.GetFiles(@"C:\windows\*.*");
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  13. #13
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut
    Salut !
    Ton code avec le *.* me renvoie une erreur comme quoi l'application a un problème, je peux faire continuer et quitter. J'ai essayé plusieurs méthodes dérivant de ta solution et toujours pareil.

    Sinon je sais pas si ça vient du chemin, parce que j'ai rentré juste un nom de dossier au hasard qui n'existait pas et ça me la bien créé dans le dossier de l'exécutable, alors le chemin doit etre bon, quand je met Length il me renvoit également le bon nombre de fichier dans le dossier.

    Mon problème étant pour afficher les noms des fichiers, est-ce réellement la bonne fonction?

    Merci

  14. #14
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    salut, si tu veux mettre *.* ou bien *.exe...etc il faut utiliser le paramètre "searchPattern" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Directory.GetFiles(@"C:\windows\", "*.exe");

  15. #15
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    salut, si tu veux mettre *.* ou bien *.exe...etc il faut utiliser le paramètre "searchPattern" :
    Ah oui juste !
    Merci PascalC, j'avais ecrit de memoire un peu vite ;-)

    N.B. : A ce propos Roseba, il est effectivement tres dificille et un peu vain de tout avoir en memoire, l'intelisence est la pour t'aider a te concentrer sur l'essentiel.
    Je te conseille de regarder attentivement les surcharches proposées par une methode quand tu ouvre la parenthes et aussi d'inspecter les methodes proposées dans une classe et aussi d'utiliser F1 qui te renvoire sur l'aide de la méthode avec souvent un exemple !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 64
    Points : 62
    Points
    62
    Par défaut
    Coucou,

    Jette un oeil à MSDN pour ce qui est des gestions de fichiers et de Dossiers.
    Ces deux pages contiennent des explications et des exemples assez explicite, je pense que tu devrai y trouver ton bonheur .


    PS: si tu touilles un peu au démarrage c'est normal (surtout venant du PHP ^^ ) je te conseil quand tu aura le temps de passer faire un tour sur le coach en C# etsi tu aimes bien le web il y en un en ASP.net, mais attention une fois qu'on a gouter l'ASP, le php deviens barbare .
    Entre la culture des perles fines et ceux qui perlent l'inculture, un point commun domine : c'est le QI de l'huître !

  17. #17
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup, mon problème est résolu. Enfin d'ailleurs j'ai un autre problème je fais un autre sujet et je marque cleui ci résolu ou je continue dans celui ci?

    Merci

  18. #18
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Le mieux est evidement de faire un autre sujet
    Et de marquer celui-ci resolu
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

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

Discussions similaires

  1. Lister les fichiers d'un dossier
    Par Mom's dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 20/11/2006, 08h32
  2. [PC] Lister les fichiers d'un dossier
    Par toto_in_th_sky dans le forum Cobol
    Réponses: 2
    Dernier message: 11/09/2006, 17h44
  3. Réponses: 13
    Dernier message: 24/08/2006, 13h05
  4. Lister les fichiers d'un dossier par page
    Par bwatex dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/08/2006, 19h09
  5. Réponses: 2
    Dernier message: 24/05/2006, 19h29

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