使用Uri.Makerelative Path并获得正确的相对路径



如果执行以下代码行:

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()

相关内容

  • 没有找到相关文章

最新更新