Подтвердить что ты не робот

Почему этот Path.Combine не работает?

У меня есть следующая команда:

string reportedContentFolderPath =
Path.Combine(contentFolder.FullName.ToString(), @"\ReportedContent\");

Когда я смотрю в отладчике, я вижу следующее:

contentFolder.FullName = "E:\\"

Однако

reportedContentFolderPath = "\\ReportedContent\\"

Почему Path.Combine измельчает E: \?

4b9b3361

Ответ 1

У вас есть косая черта на @"\ReportedContent\". Вы не хотите, чтобы это (или конечный, я подозреваю) - попробуйте просто:

string reportedContentFolderPath =
    Path.Combine(contentFolder.FullName.ToString(), "ReportedContent");

Из документации:

Если path2 не включает в себя корень (например, если path2 не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2 содержит корень, возвращается path2.

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

Ответ 2

Это объясняется в документации по методу:

Если path2 не включает в себя root (например, если путь2 не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2 содержит корень, возвращается путь 2.

Я рекомендую вам прочитать все, чтобы понять, как работают все возможные комбинации: Path.Combine Method

Ответ 3

Path.Combine вернет второй аргумент, если он начинается с символа разделения (\).

Ответ 4

Я бы сказал, что, указав косую черту как префикс во второй строке, метод Combine предполагает текущий диск. Попробуйте удалить косую черту.

Ответ 5

Похоже, что Path.Combine считает, что две черточки E:\\ относятся к UNC-пути, а путь UNC не должен иметь префикс буквы диска. Измените contentFolder на E:\, и он должен работать.

Ответ 6

От MSDN (внимание мое):

public static string Combine(string path1, string path2)

[...]

Возвращаемое значение

Тип: System.String Комбинированные пути. Если один из указанных путей является строкой нулевой длины, этот метод возвращает другой путь. Если path2 содержит абсолютный путь, этот метод возвращает path2.

@"\ReportedContent\" - это абсолютный путь, потому что он начинается с обратного слэша.