如果执行以下代码行:
new System.Uri("C:\Windows\System32").MakeRelativeUri(new System.Uri("C:\Windows\System32\Notepad.exe")).ToString()
和
new System.Uri("C:\Windows").MakeRelativeUri(new System.Uri("C:\Windows\System32\Notepad.exe")).ToString()
您得到:
"System32/Notepad.exe"
和
"Windows/System32/Notepad.exe"
不应该分别是"Notepad.exe"
和"System32/Notepad.exe"
吗?看来基本路径的最后部分包含在结果的相对路径中,这是不正确的,不是吗?
如果我与Web URL类似的事情:
new System.Uri("http://example.com").MakeRelativeUri(new System.Uri("http://example.com/this/is/strange")).ToString()
new System.Uri("http://example.com/this").MakeRelativeUri(new System.Uri("http://example.com/this/is/strange")).ToString()
new System.Uri("http://example.com/this/is").MakeRelativeUri(new System.Uri("http://example.com/this/is/strange")).ToString()
我得到的结果如下:
"this/is/strange"
"this/is/strange"
"is/strange"
如何获得一条相对路径,以后可以将其与原始基本路径结合起来以获取原始的绝对路径?我需要使用System.Uri.MakeRelativeUri
以外的其他东西吗?
我相信这是因为MakeRelativeUri
如果System32
是一个没有扩展名的文件夹或文件,则无法推断。这将有效:
new System.Uri("C:\Windows\System32\").MakeRelativeUri(new System.Uri("C:\Windows\System32\Notepad.exe")).ToString();
URL也会发生同样的情况。this
是文件夹还是资源?但是,这将起作用:
new System.Uri("http://example.com/this/").MakeRelativeUri(new System.Uri("http://example.com/this/is/strange")).ToString()