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 :

La gestion des chemins fichiers : un mystère ! [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut La gestion des chemins fichiers : un mystère !
    Vieux programmeur en VB (j'ai appris le Basic au début des années 80, c'est vous dire !), j'ai eu récemment l'idée folle de me mettre au C#.

    Bien évidemment, ma question vous paraîtra très basique, mais pour moi la gestion des chemins fichiers en C# (avec ses doubles antislashs) est un mystère !

    J'ai fait un petit programme très simple permettant de sélectionner un dossier et d'afficher le résultat dans une TextBox. Là où je suis complètement dérouté c'est lorsque je demande à Visual Studio de m'afficher le contenu de la textBox :
    • La TextBox m'affiche : "\\NAS-DESM720\Dossier_perso_JC" (ce qui est normal).
    • ...mais Visual Studio m'affiche : "\\\\NAS-DESM720\\Dossier_perso_JC" ().

    Pouvez-vous m'expliquer pourquoi cette fantaisie,... où m'indiquer où je puis trouver des infos là-dessus?
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 242
    Points : 12 874
    Points
    12 874
    Par défaut
    Bonjour,
    L'antislash est un caractère d'échappement en C#, par exemple une tabulation se matérialise par un "\t".
    Donc pour qu'il ne soit pas interprété, il faut le doubler.
    Tu peux aussi mettre un arobase devant la chaîne, pour qu'elle ne soit pas "interprété"
    Donc ces deux écritures sont équivalentes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string maChaine = @"\\NAS-DESM720\Dossier_perso_JC";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string maChaine = "\\\\NAS-DESM720\\Dossier_perso_JC";
    Tatayo.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    L'antislash est un caractère d'échappement en C#, par exemple une tabulation se matérialise par un "\t".
    Donc pour qu'il ne soit pas interprété, il faut le doubler.
    Tu peux aussi mettre un arobase devant la chaîne, pour qu'elle ne soit pas "interprété"
    Donc ces deux écritures sont équivalentes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string maChaine = @"\\NAS-DESM720\Dossier_perso_JC";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string maChaine = "\\\\NAS-DESM720\\Dossier_perso_JC";
    Tatayo.
    Bonjour Tatayo et merci pour cette précision.

    Si je comprends bien, d'après tes 2 exemples, dans une variable chaîne représentant un chemin Windows, tous les antislash doivent être systématiquement doublés. Ce qui fait que (dans notre exemple) le contenu réel de la variable est "\\\\NAS-DESM720\\Dossier_perso_JC" (comme en témoigne Visual Studio).
    Par contre, lorsque le programme exploite cette variable, C# se charge de "dédoubler" automatiquement tous les doubles antislashs.

    Ai-je bien compris ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 242
    Points : 12 874
    Points
    12 874
    Par défaut
    En fait il ne dédouble pas les antislashs, il interprète '\\' comme '\', tout comme '\t' sera interprété comme une tabulation.
    L'arobase devant le contenu d'une variable indique que le contenu ne doit pas être interprété, d'où les antislash non doublés.

    Tu pourras trouver plus d'infos sur ce sujet sur cette page.

    Tatayo.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci Tatayo.
    J'y vois plus clair maintenant .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des chemins et fichiers hors charset ascii
    Par PatriK-b dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/12/2009, 15h33
  2. Réponses: 5
    Dernier message: 07/08/2008, 14h36
  3. gestion des chemins
    Par Mokhtar BEN MESSAOUD dans le forum POSIX
    Réponses: 9
    Dernier message: 15/02/2008, 13h43
  4. Réponses: 7
    Dernier message: 05/08/2005, 16h32
  5. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08

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