当前位置:  开发笔记 > 编程语言 > 正文

Path.Combine绝对值与相对路径字符串

如何解决《Path.Combine绝对值与相对路径字符串》经验,为你挑选了3个好方法。

我正在尝试使用相对路径加入Windows路径Path.Combine.

但是,Path.Combine(@"C:\blah",@"..\bling")返回C:\blah\..\bling而不是C:\bling\.

有没有人知道如何在不编写我自己的相对路径解析器的情况下完成此任务(这不应该太难)?



1> Llyle..:

什么有效:

string relativePath = "..\\bling.txt";
string baseDirectory = "C:\\blah\\";
string absolutePath = Path.GetFullPath(baseDirectory + relativePath);

(结果:absolutePath ="C:\ bling.txt")

什么行不通

string relativePath = "..\\bling.txt";
Uri baseAbsoluteUri = new Uri("C:\\blah\\");
string absolutePath = new Uri(baseAbsoluteUri, relativePath).AbsolutePath;

(结果:absolutePath ="C:/blah/bling.txt")


是的,这就是我对帖子的暗示
只要确保baseDirectory有尾随\\,否则你最终得到`C:\\ blah .. \\ bling.txt`,但这不起作用.在这种情况下,您可以手动将它们添加到字符串或执行`Path.GetFullPath(Path.Combine(baseDirectory,relativePath))
你的__What Works__部分的结果不应该是`C:\ bling.txt`吗?

2> Colonel Pani..:

在组合路径上调用Path.GetFullPath http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx

> Path.GetFullPath(Path.Combine(@"C:\blah\",@"..\bling"))
C:\bling

(我同意Path.Combine应该自己做)



3> shahkalpesh..:

Path.GetFullPath(@"c:\windows\temp\..\system32")?


注意:应该导致`c:\ windows\system32`
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有