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

C# Discussion :

chemin relatif via streamreader ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 27
    Points : 14
    Points
    14
    Par défaut chemin relatif via streamreader ?
    Mon programme doit absolument lire un fichier .txt qui est en faite un fichier "parametre" et via un streamreader (absolument). Ma question est la suivante, j'aimerais que le chemin d'accès donner au streamreader soit un chemin relatif, que qu'importe ou est le programme, il trouve le .txt s'il est dans le meme "dossier"

    vous savez comment je dois m'y prendre ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Tu connais la position de ce fichier par rapport à cette de ton exe ?
    Si oui tu passes ce genre de chaîne dans le ctor de ton StreamReader :
    • Même dossier que l'exé --> "./MonFichier.txt"
    • Dossier au dessus de l'exé --> "../MonFichier.txt"
    • Dossier en dessous de l'exé --> "./DossierEnDessous/MonFichier.txt"


    Essayes avec ça.
    Mais dis à ton prof que pour les fichiers de config il existe la classe Settings

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    C'est un slash ? pas un anti slash ?

    pour le sachant que comme c'est un streamreader (et je ne sais plus pour qu'elle raison mais bref) il faut que je mette un dans le chemin d'accès avant les guillemets

    en gros ca donnerait ca donc ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (StreamReader paramconfig = new StreamReader(@"./Parametres.txt"))

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    le @ sert à échapper les \

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string toto = @".\monfichier.txt";
    string titi = ".\\monfichier.txt";
    Ça revient au même. Et oui tu peux mettre un "/" ou un @"\" ou "\\" pour délimiter tes répertoires.
    Le mieux étant Path.DirectorySeparatorChar.

    Un lien vers le verbatim-string : https://msdn.microsoft.com/fr-fr/lib...=vs.71%29.aspx

    Tu utilises un StreamReader pour lire un fichier texte. On trouve aussi un BinaryReader pour lire des fichiers binaires.
    'Stream' te permet de gérer un Flux avec un curseur et ainsi de lire ton fichier bloc par bloc (ou ligne à ligne) et ainsi de ne pas tout charger dans la mémoire; juste une question d'optimisation.
    Que voudrais-tu utiliser à la place ? File.ReadAllLines() ?

    Oui ça donnerait ça si ton fichier est dans le même répertoire que l'exé. Ou bien tu peux même juste passer "parametre.txt"

  5. #5
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Hum, ici si le fichier est a code du exe, commence par "./", ".\" ou peu importe est facultatif.
    Sinon si tu as un fichier quelque part, utilise Path.Combine(), C'est le meilleur moyen d'etre sur que ton path est correct: https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par alkaz Voir le message
    Mon programme doit absolument lire un fichier .txt qui est en faite un fichier "parametre" et via un streamreader (absolument). Ma question est la suivante, j'aimerais que le chemin d'accès donner au streamreader soit un chemin relatif, que qu'importe ou est le programme, il trouve le .txt s'il est dans le meme "dossier"

    vous savez comment je dois m'y prendre ?
    Attention : les réponses fournies supra ne sont valables que pour un programme autonome (WIndows ou console) mais pas pour un site web/web service. (cas où c'est la syntaxe "~\MyRelativePath" qui devra être utilisée) ni pour un service (cas où la notion de path par défaut n'existe pas, et il faudra le reconstruire en partant du path d'accès à l'assembly d'entrée).
    Beaucoup trop d'hommes viennent au monde : l'Etat a été inventé pour ceux qui sont superflus. (Friedrich Nietzsche)

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Sinon si tu as un fichier quelque part, utilise Path.Combine(), C'est le meilleur moyen d'etre sur que ton path est correct: https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    Je plussoye : on ne devrait jamais utiliser les séparateur tel quel, mais uniquement les Path.Combine et Path.DirectorySeparatorChar, Path. PathSeparator, etc .. pour construire les path.

    Ca évite de "dealer", par exemple, avec la présence ou non d'un "/" ou d'un "\" sur un path fourni et, le cas échéant, ça élimine des problèmes lors d'un éventuel portage Mono.

    De même on ne manipulera jamais directement les extensions de fichiers mais à travers les méthodes HasExtension, GetExtension et ChangeExtension. (ça, ça évite de se compliquer la vie et de créer des bugs en écrivant des traitement de chaîne avec des noms de fichiers ayant eux même un "." dedans, etc ...).
    Beaucoup trop d'hommes viennent au monde : l'Etat a été inventé pour ceux qui sont superflus. (Friedrich Nietzsche)

Discussions similaires

  1. Importer un module via un chemin relatif
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 22/11/2008, 13h57
  2. XAML, et les images via chemin relatif
    Par Ikit dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 29/05/2008, 11h10
  3. [Plugin Tomcat] Chemin relatif
    Par cloogy dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 01/03/2005, 16h26
  4. [XSL-FO] Chemin relatif d'une image
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/08/2004, 13h25
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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