2015-01-06 3 views
3

Я хочу, чтобы получить путь, что мое приложение находится в я получаю физический путь по следующему коду:.как идти на один шаг назад в пути в C#

string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath; 

я получаю что-то вроде этого, как результат :

D:\\Projects\\UI\\IAC.SMS.MvcApp\\ 

Я знаю, что я могу уничтожить строку «\» и объединить их. Но есть ли простой способ сделать один шаг назад и получить это?

D:\\Projects\\UI\\ 
+0

Как насчет добавления ../ в пути – Phoenix

ответ

4

Вы ищете метод Directory.GetParent.

var directoryName = Path.GetDirectoryName("D:\\Projects\\UI\\IAC.SMS.MvcApp\\"); 
var parentName = Directory.GetParent(directoryName).FullName; 

Или

var parentName = new DirectoryInfo("D:\\Projects\\UI\\IAC.SMS.MvcApp\\").Parent.FullName; 
+1

Обратите внимание, что вам еще нужно '.TrimEnd (Path.DirectorySeparatorChar)', чтобы получить его работу с путем, предоставленным ОП. –

+0

@AlexeiLevenkov Нет, вам не нужна никакая отделка. Классы 'Path' и' Directory' заботятся обо всех этих волосатых деталях. –

+0

'Directory.GetParent (" D: \\ Projects \\ UI \\ IAC.SMS.MvcApp \\ "). ToString()' :) –

2

Directory.GetParent будет работать в некоторых случаях, но это предполагает снижение производительности за счет создания объекта DirectoryInfo, который будет населен со всеми видами информации о каталоге которые могут не понадобиться (например, время создания). Я бы рекомендовал Path.GetDirectoryName, если вам нужен только путь, тем более, что с помощью этого метода путь не должен существовать, и вам не нужно иметь доступ к нему для успешного вызова.

var filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath; 

var parent = Path.GetDirectoryName(filePath); 
+0

Вам нужен '.TrimEnd (Path.DirectorySeparatorChar)' – Ripple

+0

Что я имею в виду, так это то, что он навлечет накладные расходы на создание такого объекта, поскольку он является типом возвращаемого метода (отредактированным для лучшего определения этого). –

+0

@MikeNESS А, я понимаю, что вы имеете в виду. Спасибо, я не осознавал накладных расходов. –

Смежные вопросы