Path.Combine绝对与相对pathstring
我试图用Path.Combine
join一个相对path的Windowspath。
但是, Path.Combine(@"C:\blah",@"..\bling")
返回C:\blah\..\bling
而不是C:\bling\
。
有没有人知道如何做到这一点,而不写我自己的相对pathparsing器(这不应该太难)?
什么工程:
string relativePath = "..\\bling.txt"; string baseDirectory = "C:\\blah\\"; string absolutePath = Path.GetFullPath(baseDirectory + relativePath);
(result:absolutePath =“C:\ bling.txt”)
什么都行不通
string relativePath = "..\\bling.txt"; Uri baseAbsoluteUri = new Uri("C:\\blah\\"); string absolutePath = new Uri(baseAbsoluteUri, relativePath).AbsolutePath;
(result:absolutePath =“C:/blah/bling.txt”)
在组合path上调用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本身应该这样做)
Path.GetFullPath(@"c:\windows\temp\..\system32")?
Path.GetFullPath(@"c:\windows\temp\..\system32")?
这将给你正是你所需要的(path不必存在这个工作)
DirectoryInfo di = new DirectoryInfo(@"C:\blah\..\bling"); string cleanPath = di.FullName;
对于Windows通用应用程序Path.GetFullPath()
不可用,您可以改为使用System.Uri
类:
Uri uri = new Uri(Path.Combine(@"C:\blah\",@"..\bling")); Console.WriteLine(uri.LocalPath);