代码之家  ›  专栏  ›  技术社区  ›  Dmitri Nesteruk

组合和点符号[复制]

  •  38
  • Dmitri Nesteruk  · 技术社区  · 16 年前

    这个问题已经有了答案:

    我在找类似的东西 Path.Combine 方法将帮助我正确地组合绝对路径和相对路径。例如,我想要

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

    屈服 c:\alpha\gamma 而不是 c:\alpha\..\gamma 作为 路径组合 做。有什么简单的方法可以做到这一点吗?不用说,我也要句号 . 路径或多个 .. 路径(例如, ..\..\ )正确工作。

    5 回复  |  直到 11 年前
        1
  •  62
  •   jason    16 年前

    使用 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
    
        2
  •  8
  •   Aryabhatta    16 年前

    您可能可以执行path.combine,后跟path.getfullpath。

        3
  •  6
  •   Steve Danner    16 年前

    您可以使用两个调用的组合,如下所示:

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

    这会给你你想要的结果。

        4
  •  3
  •   Reed Copsey    16 年前

    你可以打电话 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
  •  0
  •   user2192239    11 年前

    但似乎getfullpath并不总是对的 尝试:

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

    它们输出相同的结果,似乎您无法将其移动到其他共享 第二个问题的正确答案应该是

    \\计算机A\shareB\folderB

    但它给予

    \\计算机A\sharea\shareb\folderb

    对于两者

    推荐文章