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 fichiers de plusieurs repertoires [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut Lister fichiers de plusieurs repertoires
    Bonjour a tous ! =)

    Me revoici de retour sur le fofo pour une nouvelle question a soumettre aux pros du c# !
    Alors voila, c'est tous bête mais je rencontre quelques difficultés a créer ma petite appli de copie assistée..

    Je m'explique, j'ai un repertoire réseau ( incluant des sous-répertoires ) qui contient pleins de fichiers du même type (.id ), le but et de d'avoir une form avec 2 textbox ( une ou l'on rentre le nom du fichier désiré et l'autre ou l'on rentre la destination ou l'on veut copier le fichier ).

    Bon ca c'est facile, j'y arrive bien, le problème c'est quand le fichier que je veux se trouve dans un sous repertoire... je ne parvient pas a " trouver " mon fichier.

    Voila le code pour illustrer:

    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
    23
    private void button1_Click(object sender, EventArgs e)
            {
                string fichier = textBox1_id.Text;
                string frc = textBox2_FRCdistant.Text;
     
                if (System.IO.File.Exists(@"\\chemin_reseau" + fichier))
     
                    try
                    {
                        System.IO.File.Copy(@"\\chemin-reseau" + fichier, @"\\" + frc + @"\d$" + @"\" + fichier);
                    }
                    catch
                    {
     
                    }
     
                else
                {
                    MessageBox.Show("Le fichier spécifié n'existe pas !", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
     
     
               // MessageBox.Show("Transfert effectué ! ", "Done !", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Donc ce code fonctionne ( plus ou moins bien ^^' ) mais des que le fichier se trouve dans un sous repertoire de " chemin_réseau " bin je ne le trouve po, forcement..
    Du coup n'y aurait il pas une petite astuce pour englober tous les sous-dossiers de mon " chemin-réseau " lors de mon System.IO.file.Copy ?

  2. #2
    Membre confirmé Avatar de Julien698
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Points : 473
    Points
    473
    Par défaut
    Salut,

    Avec File.Exists tu es obligé de spécifier le chemin complet du fichier.
    Exemple pour un sous dossier : @"\\chemin_reseau\\sousDossier\\" + fichier , dans le cas actuel c'est normal qu'il ne les trouve pas.

    Ce que tu peux faire c'est de lister tous les fichiers dans un array avec leur chemin complet, et lancer ta recherche dessus.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    D'accord mais t'aurais un exemple de comment faire ca ?
    Je ne sais pas ce que c'est une array...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Je pense que ta solution passeras forcément par Directiory.GetFiles(...)

    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut J@ckHerror !

    D'accord un getfiles mais après j'en fait quoi ? t'a une idée ?
    J'peux afficher le tout dans une listbox...

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Si tu as 2 fichiers qui portent le même nom dans 2 dossiers différents, ça te dérange pas de ne pas savoir lequel va être copié ?

    Si oui, il faudrait peut être afficher un chemin plus parlant.

    Sinon pour ton problème :
    Je ne stockerai pas des chaines de caractères dans ma listbox mais des objets FileInfo.
    Demander à la listbox d'afficher la propriété Name de ces objets FileInfo.

    Ça donne quelques chose comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    listBox1.DisplayMember = "Name";
    string[] lst = Directory.GetFiles(@"C:\MSOCache", "*.*", SearchOption.AllDirectories);
    foreach (string item in lst)
    	listBox1.Items.Add(new FileInfo(item));
    Après, il y a toutes les informations que tu souhaites dans la listbox puisque ce sont des objets FileInfo (.FullName pour le chemin complet)

  7. #7
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 96
    Points
    96
    Par défaut
    Bonne idée, même si je garderais la listbox pour l'affichage
    les Items sont mieux dans une collection ou un tableau non ?
    Comme on fait un truc dans ce style, autant garder la fonction de la listView qui est de montrer et utiliser les tableaux qui contiennent déja ces infos (évite de rescanner la listView à chaque fois que l'on a besoin d'une info :
    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
    23
    24
    25
     // test si le dossier existe
                        if (Directory.Exists(ligneConfig.Chemin))
                        {
     
                            //liste des fichiers à scanner
                            string[] ListeTousFichiers;
                            //liste tous les sous-répertoires
                            string[] ListeTousRepertoires = Directory.GetDirectories(TonChemin);
                            // scanner les dossiers et archiver les chemins des fichiers
                            ListeTousFichiers = Directory.GetFiles(TonChemin, "*." + TesExtensions, SearchOption.AllDirectories);
                            // OU //    
                            ListeTousFichiers = Directory.GetFiles(TonChemin, "*." + TesExtensions, SearchOption.TopDirectoryOnly);
     
     
     
                            // regarder chaque fichier trouvés pour vérifier ce que tu veux
                            foreach (string fichiers in ListeTousFichiers)
                            {
                                //Ton code à faire
                                //écrire dans une listView, voir autre chose en même temps
                            }
     
     
     
                            }
    Voila avec ça tu as de quoi faire a peut prêt tout ce que tu veux non ?
    Sinon tu peux le faire avec une fonction récursive, mais le framework te le propose tout fait
    Kenavo

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut eric !
    Non ca ne pose pas de problème car il n'y a pas de doublons dans mon répertoire, tous les fichiers ne sont que d'un seul type et respectent une norme de nommage bien définit.

    D'accord alors si j'ai bien tout compris les gars on scan tous le répertoire ainsi que ses sous-répertoires, on colle tout ca dans un string[] et on affiche le string dans la listbox ! ( arrêtez moi si je me trompe ) ^^
    Ensuite est ce que je peux dire a un bouton de copier / coller mon item sélectionné dans la listbox avec System.IO ?

    Si je reprend ton exemple adn56:

    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
    23
    24
    25
    // test si le dossier existe
                        if (Directory.Exists(ligneConfig.Chemin))
                        {
     
                            //liste des fichiers à scanner
                            string[] ListeTousFichiers;
                            //liste tous les sous-répertoires
                            string[] ListeTousRepertoires = Directory.GetDirectories(TonChemin);
                            // scanner les dossiers et archiver les chemins des fichiers
                            ListeTousFichiers = Directory.GetFiles(TonChemin, "*." + TesExtensions, SearchOption.AllDirectories);
                            // OU //    
                            ListeTousFichiers = Directory.GetFiles(TonChemin, "*." + TesExtensions, SearchOption.TopDirectoryOnly);
     
     
     
                            // regarder chaque fichier trouvés pour vérifier ce que tu veux
                            foreach (string fichiers in ListeTousFichiers)
                            {
                                // Exemple
                                System.IO.File.Copy(listBox1.SelectedItem, mon_chemin);
                            }
     
     
     
                            }
    L'idée vous parait bonne ? ( je suis vraiment pas sur de moi la.. ^^')

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Ha et je ne sais pas ce que c'est qu'une fonction récursive, je suis un noob ne l'oublions pas ! lol

  10. #10
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bon ben c'est beaucoup moins fun ton truc

    Tu connait le chemin racine de scan le nom du fichier et tu veux savoir ou il se situe, du coup je ne voit pas le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string FindPath = Directory.GetFiles(@"C:\MSOCache", "Office64WW.msi", SearchOption.AllDirectories).FirstOrDefault();

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Pour répondre à adn56, oui les items d'une listbox sont une collection déjà.
    Et on as pas besoin de rescanner on prendre uniquement l'objet (qui contient toutes les informations nécessaires) sélectionné.

  12. #12
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    D'ailleur pourquoi 2 textbox ( une ou l'on rentre le nom du fichier désiré et l'autre ou l'on rentre la destination ou l'on veut copier le fichier ), il suffit de sélectionner dans la première listbox pour choisir ce que l'on souhaite copier.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Alors pour expliquer:

    J'ai un répertoire réseau avec un chemin a rallonge qui stock les fichiers .id de a peu prés 4500 utilisateurs tous disséminés dans plusieurs sous-répértoires.
    Le but est de créer un petit module qui permet avec deux pauvres textboxs de récupérer les fichiers .id voulu dans ce répertoire réseau et de le rebalancer via le partage administratif sur le poste de l'utilisateur sans avoir a chercher partout ou se trouve ce fichier.

    Bon apres le but ultime est de me former au c# car je trouve ca super interessant mais c'est une autre histoire !

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Oui mais a la base la listbox ne m’intéresse pas, je voulais les deux textboxs, une pour le nom du fichier et l'autre pour le chemin de destination.

  15. #15
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ok super je te propose un truc, pourquoi ne pas utiliser les suggestions de la textbox alors ?

    Nom : txtbox.jpg
Affichages : 265
Taille : 7,8 Ko

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Ha bha si carrément ça m’intéresse ca ! =D
    En code ça donne quoi ?

  17. #17
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Fait quelques test avant le code il faut que tu ajoute les suggestions dans les propriétés de la textbox :

    'AutoCompleteCustomSource' -> Créer des entrés pour tests
    AutoCompleteSource = CustomSource
    AutoCompleteMode l'un des 3 derniers (pas None)

    Comme ça tu voit si ça à l'air de correspondre à ton besoin

  18. #18
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je vient de comprendre, c'était toi le coup de l'IP v4 (Afficher adresse IP v4 dans une richtextbox ou un label)

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Oui ca m'a l'air plutôt pas mal ca !
    Reste a savoir comment je cale mes entrées avec le contenu de mon répertoire et comment j'agis sur ce que me propose ma textbox..

  20. #20
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Bha oui ! ^^ et les process dans des threads aussi ! =P
    Tu est un peu mon maître Jedi ces temps-ci ! lol

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Lister fichiers dans sous repertoires
    Par micka180 dans le forum VBScript
    Réponses: 2
    Dernier message: 26/11/2009, 10h34
  2. Copier et renommer un fichier de plusieurs repertoires differents
    Par Jessy2 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 01/10/2008, 15h24
  3. Charger fichiers de plusieurs repertoires
    Par kabil.cpp dans le forum MATLAB
    Réponses: 9
    Dernier message: 12/09/2008, 13h29
  4. Lister fichier dans un repertoire distant
    Par toitoine01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2008, 09h30
  5. Comment Cherher un fichier sous plusieur repertoir
    Par zizo89 dans le forum Delphi
    Réponses: 3
    Dernier message: 17/05/2007, 20h32

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