Создание пути к файлу в C # - PullRequest
5 голосов
/ 22 мая 2010

Итак, я пытаюсь создать путь в C #. Я использую Environment.Machinename и храню его в переменной serverName. Затем я создаю еще одну строковую переменную, и у меня там есть другое расширение пути. Вот мой код:

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

Независимо от того, что я делаю, я не могу получить только одну обратную косую черту до AlarmLogger. Любые идеи, как я могу указать путь в C #?

Edit: мне интересно, если мой код, кажется, не хочет правильно вставить. В любом случае, когда я вставляю его, я вижу только одну обратную косую черту, но в моем коде есть две. Из-за последовательности escape-символов. Но что-то вроде

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

не хочет работать на меня.

Ответы [ 3 ]

20 голосов
/ 22 мая 2010

Используйте Path.Combine(serverName, folderName). Path.Combine - всегда лучшее решение, чем самостоятельное составление.

2 голосов
/ 23 мая 2010

Вы не можете использовать Path.Combine для этого, как предлагается. Причина в том, что он игнорирует статические переменные, если первая запись является статической, например, Environment.MachineName (подробности см. В документах MSDN). Если вы используете Path.Combine (имя_сервера, имя_фолдера), вы получите "\ AlarmLogger". Кроме того, он разбирает двойные косые черты на одиночные.

При этом вы можете сделать что-то вроде следующего (среди прочего):

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

Вы можете использовать множество способов удалить начальную косую черту помимо подстроки.

1 голос
/ 22 мая 2010

Непонятно, что вы пытаетесь сделать или что идет не так.

Если у вас возникли проблемы с включением обратной косой черты в строки, их необходимо экранировать дополнительной обратной косой чертой:

string twoBackslashes = "\\\\";

Или вы можете сделать это так:

string twoBackslashes = @"\\";

Если вы пытаетесь манипулировать путями, посмотрите на класс System.IO.Path . В частности, Path.Combine может быть полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...