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 :

Reconstruire le chemin d'une application windows form à partir d'un chemin relatif


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Par défaut Reconstruire le chemin d'une application windows form à partir d'un chemin relatif
    Bonjour,

    Je suis en train de développez une application windows form en c#.J'ai besoin de faire ceci.
    J'ai une application monappli.exe qui se trouve dans mon disque local.
    Dans mon appli winform,je veux créer une classe qui fait ceci:

    1 Avoir une méthode qui fait ce traitement (Résolution de chemin d'un script ou d'une appli) :
    La méthode reçoit un chemin string(chemin absolu ou relatif de monappli.exe),
    il teste si le chemin est absolue,il l'affiche sinon à partir du chemin relatif,il reconstruit le chemin absolu de ce chemin
    relatif.

    Je bloque un peu.J'ai essayé avec Les classes File et Directory mais sans succès.

    Quelqu'un peut m'aider avec un exemple ?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Normalement, la classe FileInfo fait exactement cela : on instancie un objet de type "FileInfo" et dans tous les cas on retrouve son chemin complet dans la propriété FullName.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Par défaut
    Bonjour,
    merci pour la réponse.

    Mon souci est que mon appli ne fait pas ce que je veux avec FileInfo et FullName.J'ai un exemple concret que j'ai testé.

    J'ai mon fichier (test.cmd )qui se trouve sur le disque D de mon ordinateur D:\Mytest\Mywork\cshapr\test.cmd.

    Quand je crée cette petite appli console et que je passe (test.cmd) ,il ne me renvoit pas D:\Mytest\Mywork\cshapr\test.cmd

    mais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    The directory 'c:\users\jr\documents\visual studio 2013\Projects\ConsoleApplicat
    ion1\ConsoleApplication1\bin\Debug' contains the following files and directories
    :
    ConsoleApplication1.exe
    ConsoleApplication1.exe.config
    ConsoleApplication1.pdb
    ConsoleApplication1.vshost.exe
    ConsoleApplication1.vshost.exe.config
    ConsoleApplication1.vshost.exe.manifest
    Comment faire pour récupérer le bon chemin D:\Mytest\Mywork\cshapr\test.cmd dans le cas où

    1) je passe juste le nom du fichier comme c'est mon cas : test.cmd

    2) je passe le chemin relatif de test.cmd est qu'il me retrouve le chemin absolue : D:\Mytest\Mywork\cshapr\test.cmd

    mon code :

    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
    26
    27
    28
     
    using System.IO;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Open an existing file, or create a new one.
                //FileInfo fi = new FileInfo("temp.txt");
                FileInfo fi = new FileInfo("ReBuild.cmd");
     
                // Determine the full path of the file just created.
                DirectoryInfo di = fi.Directory;
     
                // Figure out what other entries are in that directory.
                FileSystemInfo[] fsi = di.GetFileSystemInfos();
     
                Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);
                //Console.ReadLine();
                // Print the names of all the files and subdirectories of that directory. 
                foreach (FileSystemInfo info in fsi)
                    Console.WriteLine(info.Name);
                Console.ReadLine();
            }
        }
    }
    Merci de votre aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok, je vois.

    Normalement, il y a toujours un dossier courant et celui-ci est renvoyé par Environment.CurrentDirectory. C'est par rapport à ce répertoire que la classe FileInfo ou DirectoryInfo se fie lorsqu'on les a construit avec un chemin relatif et qu'ils renvoient le chemin absolu.

    Maintenant, il semblerait, d'après ce que j'ai compris, que tu cherches à connaitre l'emplacement de ton fichier sur le disque. Or, il ne faut pas oublier qu'il peut y avoir dans ce cas plusieurs fichiers avec le même nom dans des dossiers différents. Donc en fait, tu veux faire une recherche comme la fonction recherche de fichier dans Windows. Cela peut prendre quand même pas mal de temps.

    Dans ce cas, une petite requête Linq peut faire l'affaire, avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string[] mesFichiers =
    (from fi in Directory.EnumerateFiles(@"d:\","test.cmd")
    select fi.FullName).ToArray();
    En admettant que tu recherches juste sur "d:". Encore une fois, cela peut prendre pas mal de temps...

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Par défaut
    Merci encore pour ta réponse.

    Mais avec string[] mesFichiers =
    (from fi in Directory.EnumerateFiles(@"d:\","test.cmd")
    select fi.FullName).ToArray();

    Directory.EnumerateFiles : EnumeratesFiles n'est pas reconnu comme methode ou propriété de Directory

    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
    26
    27
    28
    29
    30
    31
    using System.IO;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Open an existing file, or create a new one.
                //FileInfo fi = new FileInfo("temp.txt");
                FileInfo fi = new FileInfo("ReBuild.cmd");
     
                // Determine the full path of the file just created.
                DirectoryInfo di = fi.Directory;
     
                // Figure out what other entries are in that directory.
                FileSystemInfo[] fsi = di.GetFileSystemInfos();
     
    string[] mesFichiers =
    (from fi in Directory.EnumerateFiles(@"d:\","test.cmd")
    select fi.FullName).ToArray();
     
                Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);
                //Console.ReadLine();
                // Print the names of all the files and subdirectories of that directory. 
                foreach (FileSystemInfo info in fsi)
                    Console.WriteLine(info.Name);
                Console.ReadLine();
            }
        }
    }
    Peux tu illustrer avec un exemple qui marche.

    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ah, si tu n'as pas accès à la méthode "EnumerateFiles" c'est que tu t'es mis dans une version du Framework.NET inférieure à 4.
    Dans ce cas remplace-le par "GetFiles".

    En tous cas, tu auras un tableau de chaines de caractères contenant tous les chemins d'accès des fichiers qui s'appellent "test.cmd".

    N'hésites pas à consulter la documentation MSDN sur tous ces sujets...

Discussions similaires

  1. appeler page asp depuis une application windows forms
    Par salihovic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2009, 12h58
  2. Test automatisé pour une application Windows Forms
    Par Mat_76 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 07/08/2009, 15h37
  3. [Interaction] Comment afficher une application Windows Form dans une WPF ?
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 08/09/2008, 16h50
  4. Réponses: 12
    Dernier message: 21/08/2008, 12h22

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