C# 4.0 如何找到从一个绝对值到另一个绝对值的相对文件路径?

C# 4.0 如何找到从一个绝对值到另一个绝对值的相对文件路径?,c#-4.0,C# 4.0,e、 g.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";

e、 g.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());

这应该是你想要的

        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。如果有人有一个经过深思熟虑测试的解决方案,我将不胜感激。谢谢-如果同一路径中没有两个目录具有相同的名称,那么这似乎是可行的。如果有人有经过深思熟虑的解决方案,我将不胜感激。