如何从一个绝对到另一个找到相对的文件路径?
问题描述:
例如myfunc(从:c:\ my \ dir,到:c:\ my \ other \ file.ext)==> .. \ other \ file.ext。如何从一个绝对到另一个找到相对的文件路径?
新的Uri()不需要应用,除非有补救措施它返回的URI格式不是Windows文件名格式。 .LocalPath失败。
答
这应该做你想做的。
string firstDirectory = "c:\\my\\dir";
string secondDirectory = "c:\\my\\other\\file.ext";
var first = firstDirectory.Split('\\');
var second = secondDirectory.Split('\\');
var directoriesToGoBack = first.Except(second);
var directoriesToGoForward = second.Except(first);
StringBuilder directory = new StringBuilder();
bool initial = true;
foreach (string s in directoriesToGoBack)
{
if (initial)
{
initial = false;
} else
{
directory.Append('\\');
}
directory.Append("..");
}
foreach (string s in directoriesToGoForward)
{
directory.Append('\\');
directory.Append(s);
}
Console.WriteLine(directory.ToString());
谢谢 - 似乎将owrk,如果没有两个目录在同一路径具有相同的名称。如果有人经过全面测试的解决方案,我将不胜感激。 – ChrisJJ 2012-02-26 22:02:54