1
例如myfunc(從:c:\ my \ dir,到:c:\ my \ other \ file.ext)==> .. \ other \ file.ext。如何從一個絕對到另一個找到相對的文件路徑?
新的Uri()不需要應用,除非有補救措施它返回的URI格式不是Windows文件名格式。 .LocalPath失敗。
例如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