Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中的路径中后退一步#_C#_Filepath - Fatal编程技术网

C# 如何在C中的路径中后退一步#

C# 如何在C中的路径中后退一步#,c#,filepath,C#,Filepath,我想获取应用程序所在的路径。我通过以下代码获得物理路径: string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath; 我得到的结果是: D:\\Projects\\UI\\IAC.SMS.MvcApp\\ 我知道我可以用“\”将字符串分开,然后将它们组合在一起。但是有没有一个简单的方法可以退一步得到这个呢 D:\\Projects\\UI\\ 你在寻找方法 或 Directory.Get

我想获取应用程序所在的路径。我通过以下代码获得物理路径:

string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;
我得到的结果是:

D:\\Projects\\UI\\IAC.SMS.MvcApp\\
我知道我可以用“\”将字符串分开,然后将它们组合在一起。但是有没有一个简单的方法可以退一步得到这个呢

D:\\Projects\\UI\\
你在寻找方法


Directory.GetParent在某些情况下可以工作,但由于创建了DirectoryInfo对象,该对象将填充可能不需要的有关目录的各种信息(例如创建时间),因此会导致性能下降。我建议您只需要路径,尤其是因为使用此方法时,路径不必存在,并且您不必拥有访问它的权限,调用才能成功

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

var parent = Path.GetDirectoryName(filePath);

请注意,您仍然需要
.TrimEnd(Path.directoryseportorchar)
才能使用OP@AlexeiLevenkov提供的路径。不,您不需要任何修剪<代码>路径和
目录
类负责所有那些毛茸茸的细节
目录.GetParent(“D:\\Projects\\UI\\IAC.SMS.MvcApp\\”).ToString()
:)@AlexeiLevenkov是的,这不起作用。但不应该对路径使用字符串操作。我已经更新了我的答案,以使用健壮的方式(在不同的平台上工作)@B.K.是的,这不起作用,但我已经更新了我的答案,以说明如何避免字符串操纵。您需要
.TrimEnd(Path.directoryseportorchar)
我的意思是,它将导致创建这样一个对象的开销,因为它是方法的返回类型(编辑以更好地说明这一点)。@Mikenness啊,我明白你的意思。谢谢,我没有意识到开销。在路径上附加../怎么样
var parentName = new DirectoryInfo("D:\\Projects\\UI\\IAC.SMS.MvcApp\\").Parent.FullName;
var filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;

var parent = Path.GetDirectoryName(filePath);