Создание пути к файлу в C#

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

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

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

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

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

кажется, не хочет работать на меня.

5
задан Martin Smith 22 May 2010 в 19:59
поделиться

3 ответа

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

20
ответ дан 18 December 2019 в 06:49
поделиться

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

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

string twoBackslashes = "\\\\";

Или вы можете сделать это следующим образом:

string twoBackslashes = @"\\";

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

1
ответ дан 18 December 2019 в 06:49
поделиться

Вы не можете использовать Path.Combine для этого, как было предложено. Причина в том, что он игнорирует статические переменные, если первая запись статическая, например Environment.MachineName (подробности см. в документации MSDN). Если вы используете Path.Combine(servername, foldername), вы получите "\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

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

2
ответ дан 18 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: