【问题标题】:Path.Combine and the dot notation [duplicate]Path.Combine 和点符号
【发布时间】:2011-01-10 02:18:19
【问题描述】:

我正在寻找类似于Path.Combine 的方法,它可以帮助我正确组合绝对路径和相对路径。比如我想要

Path.Combine(@"c:\alpha\beta", @"..\gamma");

产生c:\alpha\gamma 而不是c:\alpha\..\gamma 就像Path.Combine 那样。有什么简单的方法可以做到这一点吗?不用说,我还想使用. 路径或多个.. 路径(例如..\..\)才能正常工作。

【问题讨论】:

    标签: c# .net path directory combinations


    【解决方案1】:

    使用Path.GetFullPath

    string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
    Console.WriteLine(Path.GetFullPath(path));
    

    DirectoryInfo 类:

    string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
    DirectoryInfo info = new DirectoryInfo(path);
    Console.WriteLine(info.FullName);
    

    两者都会输出:

    c:\alpha\gamma
    

    【讨论】:

    • 呵呵,甚至不知道GetFullPath 的存在。性感。
    【解决方案2】:

    您可能可以先执行 Path.Combine,然后执行 Path.GetFullPath。

    【讨论】:

      【解决方案3】:

      您可以像这样使用 2 个调用的组合:

      string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
      string result = Path.GetFullPath(path);
      

      这应该会给你你正在寻找的结果。

      【讨论】:

        【解决方案4】:

        您可以致电Path.GetFullPath 解决此问题。

        例如这段代码:

        string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
        Console.WriteLine(path); 
        path = Path.GetFullPath(path);
        Console.WriteLine(path);
        

        将打印:

        c:\alpha\beta\..\gamma
        c:\alpha\gamma
        

        【讨论】:

          【解决方案5】:

          但似乎 GetFullPath 并不总是正确的 试试:

            Console.WriteLine(System.IO.Path.GetFullPath(@"\\machine\sharea\foldera\..\shareb\folderb"));
            Console.WriteLine(System.IO.Path.GetFullPath(@"\\machine\sharea\foldera\..\..\shareb\folderb"));
          

          他们输出相同的结果,似乎你不能将它移动到不同的共享 第二个的正确答案应该是

          \\machinea\shareb\folderb

          但它给了

          \\machinea\sharea\shareb\folderb

          两者都有

          【讨论】:

            猜你喜欢
            • 2013-11-23
            • 2013-03-03
            • 1970-01-01
            • 1970-01-01
            • 2010-10-14
            • 2011-08-11
            • 2018-07-21
            • 2017-07-12
            相关资源
            最近更新 更多