Почему этот Path.Combine не работает?
У меня есть следующая команда:
string reportedContentFolderPath =
Path.Combine(contentFolder.FullName.ToString(), @"\ReportedContent\");
Когда я смотрю в отладчике, я вижу следующее:
contentFolder.FullName = "E:\\"
Однако
reportedContentFolderPath = "\\ReportedContent\\"
Почему Path.Combine
измельчает E: \?
Ответы
Ответ 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\"
- это абсолютный путь, потому что он начинается с обратного слэша.