none
Utilisation de GetCurrentDirectory RRS feed

  • Question

  • Bonjour !

    J'ai remarqué un souci, quand je lance mon appli, je lis un fichier .ini, il le trouve et le lis grace a la commande

    File.ReadAllLines(Path.Combine(Directory.GetCurrentDirectory(), NomFichier))

    NomFichier étant le nom du fichier .INI

    Sauf que dès que j'ouvre d'autres fichiers pour mes analyses, je ne peux plus re-charger mon .INI car la commande garde en mémoire le dernier Chemin que j'ai fait.

    Y a t'il une autre solution pour que le chemin d'acces au fichier ini ne change pas ?

    J'aimerai évité de devoir mettre le chemin "en dur" par contre ...



    • Modifié Tom57000 vendredi 23 mai 2014 07:47
    vendredi 23 mai 2014 07:00

Réponses

  • Oui c'est parceque lorsque vous effectuer une recherche dans un répertoire. Le CurrentDirectory deviens alors le répertoire ouvert lors de l'ouverture du fichier.

    Vous pouvez utiliser 

    AppDomain.CurrentDomain.BaseDirectory

    Qui vous retournera le répertoire d’exécution d'application.

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:04
    • Non proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:08
    • Proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:08
    • Marqué comme réponse Tom57000 vendredi 23 mai 2014 12:25
    vendredi 23 mai 2014 08:03

Toutes les réponses

  • Bonjour, 

    De mémoire, Path.Combine ne garde strictement rien en mémoire.

    A mon avis vous vous trompez avec l'utilisation de  : 

    Directory.GetCurrentDirectory()

    Cette méthode retourne systématiquement le chemin du répertoire de travail en cours de l'application (Répertoire où se trouve l'exécutable en cours au demarrage de l'application).

    Vous pouvez changer le répertoire en cours en le modifiant comme suit : 

    Environment.CurrentDirectory = target;


    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 07:41
    • Non proposé comme réponse Tom57000 vendredi 23 mai 2014 07:47
    vendredi 23 mai 2014 07:24
  • Oulaaaa ! Effectivement j'avais la tête ailleurs :x

    Avec ce que vous me proposez, cela ne change rien,

    une fois j'ouvre mes fichiers, il prends en compte le dernier repertoire que j'ai ouvert, j'ai donc une exeption parce que le fichier ne s'y trouve pas (Vu qu'il est toujours avec le .exe)

    vendredi 23 mai 2014 07:47
  • Oui c'est parceque lorsque vous effectuer une recherche dans un répertoire. Le CurrentDirectory deviens alors le répertoire ouvert lors de l'ouverture du fichier.

    Vous pouvez utiliser 

    AppDomain.CurrentDomain.BaseDirectory

    Qui vous retournera le répertoire d’exécution d'application.

    Cordialement, 


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:04
    • Non proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:08
    • Proposé comme réponse BEAUGRAND Kevin vendredi 23 mai 2014 08:08
    • Marqué comme réponse Tom57000 vendredi 23 mai 2014 12:25
    vendredi 23 mai 2014 08:03
  • Bonjour

    Je dirais de vérifier si NomFichier ne contiens déjà le chemin complet.
    Dans ce cas vous ne devez pas utiliser:

    File.ReadAllLines(Path.Combine(Directory.GetCurrentDirectory(), NomFichier))

    mais directement

    File.ReadAllLines( NomFichier)

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 23 mai 2014 08:10
  • Avec AppDomain.CurrentDomain.baseDirectory ça marche comme je veux merci :)

    @Aurel, Nomfichier c'est jsute le nom du fichier, a pas tout le chemin :)

    vendredi 23 mai 2014 12:26