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

Geo*_*Geo 94 c# file path

如何在C#中加入两个文件路径?

Jos*_*lio 151

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

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

  • 值得注意的是,如果"filePath"包含绝对路径,则Path.Combine仅返回"filePath".`string basePath = @"c:\ temp \"; string filePath = @"c:\ dev\test.txt";/*无论出于何种原因*/string combined = Path.Combine(basePath,filePath);`produce @"c:\ dev\test.txt" (13认同)

Cam*_*and 31

System.IO.Path.Combine()就是你所需要的.

Path.Combine(path1, path2);
Run Code Online (Sandbox Code Playgroud)


小智 5

路径连接方法

Join(String, String)
Run Code Online (Sandbox Code Playgroud)

来自https://learn.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
Run Code Online (Sandbox Code Playgroud)

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

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