如何将父目录的路径作为相对路径

时间:2017-07-11 20:38:31

标签: c# path

刚才我有一条像MyDir\Inner\Foo这样的路径,我希望能够将其转换为MyDir\Inner

我的想法是使用Path.Combine(myRelativeDir, ".."),然后(出于用户显示目的)解析它以删除..

当我在网上对此进行研究时,我似乎只能找到在Path.GetFullPath之后执行Path.Combine来解决问题的解决方案,但这对我没有帮助,因为它会导致某些问题比如C:\RootFolders\ThatIWantToHide\MyDir\Inner,我不想显示完整的路径。

标准库中是否有任何允许这样的内容,或者我是否必须使用某种字符串操作?

总结

输入: MyDir\Inner\Foo(相对路径)

期望的输出: MyDir\Inner(保持相对路径)

不受欢迎的输出: C:\RootFolders\ThatIWantToHide\MyDir\Inner(相对路径丢失)

不受欢迎的输出: Inner(只是名称,而不是相对路径)

2 个答案:

答案 0 :(得分:3)

这将获取父级并维护相对路径信息:

 Console.WriteLine(Path.GetDirectoryName(@".\bin\debug"));

答案 1 :(得分:0)

您可以使用Path.GetFullPath获取绝对路径,然后使用this post的答案将其更改为相对路径。简而言之,代码使用Uri.MakeRelativeUri()方法。