如何在 C# 中加入两条路径?

Posted

技术标签:

【中文标题】如何在 C# 中加入两条路径?【英文标题】:How do I join two paths in C#? 【发布时间】:2010-10-31 23:51:38 【问题描述】:

如何在 C# 中连接两个文件路径?

【问题讨论】:

加入两条路径是什么意思?文件路径分为两部分还是两个不同的文件?如果文件路径分为两部分,则使用 System.IO.Path.Combine(path1,path2)。更多信息在这里 [msdn.microsoft.com/en-us/library/system.io.path.combine.aspx] 【参考方案1】:

您必须使用Path.Combine(),如下例所示:

string basePath = @"c:\temp";
string filePath = "test.txt";
string combinedPath = Path.Combine(basePath, filePath); 
// produces c:\temp\test.txt

【讨论】:

值得注意的是,如果“filePath”包含绝对路径,Path.Combine 只返回“filePath”。 string basePath = @"c:\temp\"; string filePath = @"c:\dev\test.txt"; /* for whatever reason */ string combined = Path.Combine(basePath, filePath); 产生 @"c:\dev\test.txt"【参考方案2】:

System.IO.Path.Combine() 是您所需要的。

Path.Combine(path1, path2);

【讨论】:

【参考方案3】:

Path.Join 方法

Join(String, String)

来自https://docs.microsoft.com/en-us/dotnet/api/system.io.path.join?view=net-5.0#System_IO_Path_Join_System_String_System_String_的代码

class Program

    static void Main()
    
        ShowPathInformation("C:/", "users/user1/documents", "letters");
        ShowPathInformation("D:/", "/users/user1/documents", "letters");
        ShowPathInformation("D:/", "users/user1/documents", "C:/users/user1/documents/data");
    

   private static void ShowPathInformation(string path1, string path2, string path3)
    
        Console.WriteLine($"Concatenating  'path1', 'path2', and 'path3'");
        Console.WriteLine($"   Path.Join:     'Path.Join(path1, path2, path3)'");
        Console.WriteLine($"   Path.Combine:  'Path.Combine(path1, path2, path3)'");
        Console.WriteLine($"   Path.GetFullPath(Path.Join(path1, path2, path3))");
    

// The example displays the following output if run on a Windows system:
// Concatenating  'C:/', 'users/user1/documents', and 'letters'
//    Path.Join:     'C:/users/user1/documents\letters'
//    Path.Combine:  'C:/users/user1/documents\letters'
//    C:\users\user1\documents\letters
// Concatenating  'D:/', '/users/user1/documents', and 'letters'
//    Path.Join:     'D://users/user1/documents\letters'
//    Path.Combine:  '/users/user1/documents\letters'
//    D:\users\user1\documents\letters
// Concatenating  'D:/', 'users/user1/documents', and 'C:/users/user1/documents/data'
//    Path.Join:     'D:/users/user1/documents\C:/users/user1/documents/data'
//    Path.Combine:  'C:/users/user1/documents/data'
//    D:\users\user1\documents\C:\users\user1\documents\data

与 Combine 方法不同,Join 方法不会尝试对返回的路径进行根处理。 (也就是说,如果 path2 或 path2 是绝对路径,Join 方法不会像 Combine 方法那样丢弃之前的路径。

并非所有目录和文件名的无效字符都被 Join 方法解释为不可接受的,因为您可以将这些字符用于搜索通配符。例如,虽然 Path.Join("c:\", "temp", "*.txt") 在创建文件时可能无效,但它作为搜索字符串是有效的。因此,Join 方法成功地解释了它。

【讨论】:

以上是关于如何在 C# 中加入两条路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何连接两条路径并显示到数据列表(Firebase 数据库和 Ionic 2)

如何在 C# 中从文件中加载 RSA 公钥

如何在 C# 中加载私有 ecdsa 密钥 es256?

如何在 C# Web API 中加入两个表

给定两条绝对路径,我如何表达其中一条相对于另一条的路径?

如何在 webpack 中加载 CSS 的根路径