none
chemin relatif d'un fichier RRS feed

  • Question

  • salut ,

    j'ai ecrit cette ligne

    string text = System.IO.File.ReadAllText(@"\\bin\Debug\javascript-xpath-latest-cmp.txt");

    mais ça marche pas . quelqu'un sait comment donner un chemin relatif pour acceder à un fichier text.

    merci

    mardi 28 février 2012 16:51

Réponses

  • Bonjour. Cela devrait marcher mais une petite remarque en passant :

    - le dossier courant peut être modifié dans les propriétés d'un raccourci
    - un  utilisateur n'a normalement pas le droit d'écrire dans le dossier de l'exe lorsque l'application est installée avec un setup
    - le dialogue d'ouverture de fichiers peut probablement aussi changer le dossier en cours

    Pour ces raisons à mon avis, se baser sur un chemin relatif au "dossier en cours" est relativement "fragile". Ma préférence personnelle est de toujours calculer un chemin absolu en me basant par exemple sur le dossier le plus approprié obtenu via http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath.aspx. Si par exemple vous créez une variable actuellement avec http://msdn.microsoft.com/fr-fr/library/system.environment.currentdirectory.aspx, vous écrirez toujours dans le dossier courant mais il vous sera très facile de changer ensuite votre fusil d'épaule en modifiant juste une ligne de votre code...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".



    mardi 28 février 2012 17:54
    Modérateur
  • \ est déjà la racine du disque. Cela devrait donc aller chercher le fichier javascript-xpath-latest-cmp.txt" à la racine du disque en cours. Tester par exemple :

     static void Main(string[] args)
            {
                Console.WriteLine(System.IO.Path.GetFullPath(@"\..\myfile.txt"));
                Console.WriteLine(System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
                Console.Read();
            }

    Ce qui sort par exemple :

    c:\myfile.txt (mais cela pourrait être un autre disque si l'exe est appelée avec un autre lecteur en cours)
    c:\ProgramData (sous Windows 7)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 29 février 2012 11:54
    Modérateur

Toutes les réponses

  • Bonjour,

    Si votre fichier se trouve dans le répertoire \bin\Debug, il faut mettre le chemin relatif (à l'exécutable) suivant:

    string text = System.IO.File.ReadAllText(@".\javascript-xpath-latest-cmp.txt");

    Cordialement,



    My blog

    Whether you’re a construction worker, a forum moderator, or just someone that likes helping people. I think these guidelines can be helpful in keeping you helpful when being helpful.

    mardi 28 février 2012 17:31
    Auteur de réponse
  • Bonjour. Cela devrait marcher mais une petite remarque en passant :

    - le dossier courant peut être modifié dans les propriétés d'un raccourci
    - un  utilisateur n'a normalement pas le droit d'écrire dans le dossier de l'exe lorsque l'application est installée avec un setup
    - le dialogue d'ouverture de fichiers peut probablement aussi changer le dossier en cours

    Pour ces raisons à mon avis, se baser sur un chemin relatif au "dossier en cours" est relativement "fragile". Ma préférence personnelle est de toujours calculer un chemin absolu en me basant par exemple sur le dossier le plus approprié obtenu via http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath.aspx. Si par exemple vous créez une variable actuellement avec http://msdn.microsoft.com/fr-fr/library/system.environment.currentdirectory.aspx, vous écrirez toujours dans le dossier courant mais il vous sera très facile de changer ensuite votre fusil d'épaule en modifiant juste une ligne de votre code...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".



    mardi 28 février 2012 17:54
    Modérateur
  •  mon projet class library contient un fichier texte . il consiste en une BHO installable sur IE qui lit le contenu du fichier (qui est du javascript)et l'injecte dans le code source de any page IE . dans ma classe principale , je ne peux pas lire le contenu de ce fichier que lorsque je lui donne un chemin absolu .j'ai essayé avec 

    @".\javascript-xpath-latest-cmp.txt"

    mais ça marche pas .

    mercredi 29 février 2012 08:30
  • Bonjour,

    Essayer avec les instruction suivantes : 

    var scriptLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
    var scriptPath = System.IO.Path.Combine(scriptLocation, "javascript-xpath-latest-cmp.txt");

    Cordialement.

    mercredi 29 février 2012 08:43
    Auteur de réponse
  • ça marche pas . il me donne le dossier de IE.exe
    mercredi 29 février 2012 09:49
  • Bonjour,

    Que pensez vous de faire de votre fichier scripte une ressource de votre assembly ? Comme ça vous n'aurez plus de souci d'accès aux fichiers.

    Cordialement.

    mercredi 29 février 2012 10:01
    Auteur de réponse
  • j'ai mis

    string text = System.IO.File.ReadAllText(@"\..\javascript-xpath-latest-cmp.txt");

    ça a l'air de marcher sur ma machine .

    mercredi 29 février 2012 10:08
  • \ est déjà la racine du disque. Cela devrait donc aller chercher le fichier javascript-xpath-latest-cmp.txt" à la racine du disque en cours. Tester par exemple :

     static void Main(string[] args)
            {
                Console.WriteLine(System.IO.Path.GetFullPath(@"\..\myfile.txt"));
                Console.WriteLine(System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
                Console.Read();
            }

    Ce qui sort par exemple :

    c:\myfile.txt (mais cela pourrait être un autre disque si l'exe est appelée avec un autre lecteur en cours)
    c:\ProgramData (sous Windows 7)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 29 février 2012 11:54
    Modérateur
  •  

    Bonjour, Peythonet,

    Est-ce que vous avez pu résoudre votre problème en utilisant les infos fournies par Patrice ? Merci de tenir la communauté informée sur la suite de vos démarches.

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 2 mars 2012 07:45
  • j'ai ajouter le fichier dans l'install  et j'

    string text = System.IO.File.ReadAllText(fileIofo.Directory.FullName + "\\javascript-xpath-latest-cmp.txt");

    jeudi 8 mars 2012 10:04