2010-05-22 24 views
5

J'essaie donc de créer un chemin en C#. J'utilise Environment.Machinename et stocke une variable serverName. Ensuite, je crée une autre variable chaîne et ai une autre extension de chemin dedans. Voici mon code à ce jour:Création d'un chemin de fichier en C#

string serverName = Environment.MachineName; 
string folderName = "\\AlarmLogger"; 

Peu importe ce que je fais, je ne peux pas sembler obtenir un seul backslash avant AlarmLogger. Des idées comment je peux spécifier un chemin en C#?

Editer: Je me demande si mon code ne semble pas vouloir coller correctement. Quoi qu'il en soit, quand je le colle, je ne vois qu'un backslash mais mon code en a deux. En raison de la séquence de caractères d'échappement. Mais quelque chose comme

string test = @"\\" + serverName + folderName 

ne semble pas vouloir travailler pour moi.

+0

Lorsque vous entrez du code, vous devez le sélectionner et utiliser l'icône de code (101010) pour conserver le formatage d'origine. –

+1

Cela aiderait si vous donniez un exemple de ce à quoi vous voulez que le résultat final ressemble. –

Répondre

20

Utilisez Path.Combine(serverName, folderName). Path.Combine est toujours une meilleure solution que de le concocter seul.

+0

Je vais donner un coup de feu. Je vous remercie. – Jason

+1

Vous devrez également supprimer les barres obliques de folderName: string folderName = "AlarmLogger"; – s1mm0t

1

Ce que vous essayez de faire ou ce qui ne va pas n'est pas clair.

Si vous rencontrez des problèmes, y compris antislashs dans vos cordes, ils doivent être échappé avec un backslash supplémentaire:

string twoBackslashes = "\\\\"; 

Ou vous pouvez le faire comme ceci:

string twoBackslashes = @"\\"; 

Si vous êtes en essayant de manipuler les chemins, regardez la classe System.IO.Path. En particulier, Path.Combine peut être utile.

2

Vous ne pouvez pas utiliser Path.Combine pour cela comme suggéré. La raison en est qu'il ignore les variables statiques si la première entrée est statique, par ex. Environment.MachineName (consultez les documents MSDN pour plus de détails). Si vous utilisez Path.Combine (nom_serveur, nom de fichier), vous obtiendrez "\ AlarmLogger". De plus, il analyse les doubles barres obliques en barres simples.

Cela dit, vous pouvez faire quelque chose comme ce qui suit (entre autres moyens):

string serverName = Environment.MachineName; 
string folderName = "\\\\AlarmLogger"; //this gives alarmlogger two leading slashes 
string test = @"\\" + serverName + folderName.Substring(1,folderName.Length-1); //this removes one of the two leading slashes 

Vous pouvez utiliser un grand nombre de façons d'enlever la barre oblique en plus sous-chaîne.