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

how to go one step backwards in path in C#

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

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

结果是这样的:

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

我知道我可以用“\”分隔字符串并将它们组合在一起。但是有没有一种简单的方法可以退一步得到这个?

D:\Projects\UI\

您正在寻找 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;

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

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

var parent = Path.GetDirectoryName(filePath);