我有一个System.Uri,例如,
var uri = new Uri("http://www.domain.com/foo/bar");如何仅获取其中的相对Uri:
/foo/bar发布于 2009-07-10 13:35:48
您要查找的是Uri.AbsolutePath或Uri.PathAndQuery。PathAndQuery将包含查询字符串(您的问题中没有),而AbsolutePath将只给您提供路径。
Console.WriteLine(uri.PathAndQuery);
// or
Console.WriteLine(uri.AbsolutePath);...outputs下面这两个结果...
/foo/bar
发布于 2020-05-12 19:03:45
反过来,从相对路径获取绝对URI:-
1.获取所需的目录。要前进一步,只需在目录中添加\即可,例如,对于@"c:\someDirectory\something\something\foo\bar",
如果Directory.GetCurrentDirectory提供@"c:\someDirectory",则执行以下操作:-
Uri uri = new Uri(Directory.GetCurrentDirectory() +
@"\something\something\" + relative_path);或
Uri uri = new Uri(Directory.GetCurrentDirectory() +
"\\something\\something\\" + relative_path);如果没有@符号,则必须使用另一个\字符对\字符进行转义,以便它读取为字符串。
要继续前进一步,则获取当前目录并使用Directory.GetParent方法获取父目录,然后继续使用DirectoryInfo属性继续前进一步。例如,对于someDirectory\foo\bar
如果Directory.GetCurrentDirectory提供@"c:\someDirectory\somthing\something",则执行以下操作:-
DirectoryInfo directory =
Directory.GetParent(Directory.GetCurrentDirectory()).Parent;GetParent让你前进一步,返回一个DirectoryInfo对象,现在你可以继续使用Parent属性继续向上,因为你每次都会得到一个DirectoryInfo。因此,我将文件结构向上移动了两次。
Uri uri = new Uri(directory.FullName + relative_path);directory.FullName的类型是string,这是您想要的绝对路径,将其连接到您的相对路径并生成一个新的Uri。因此,这是一个绕过的工作,回到过去。
https://stackoverflow.com/questions/1109538
复制相似问题