如何在C#中加入两个文件路径?
答案 0 :(得分:147)
您必须使用Path.Combine(),如下例所示:
string basePath = @"c:\temp";
string filePath = "test.txt";
string combinedPath = Path.Combine(basePath, filePath);
// produces c:\temp\test.txt
答案 1 :(得分:30)
System.IO.Path.Combine()就是您所需要的。
Path.Combine(path1, path2);
答案 2 :(得分:0)
Path.Join 方法
Join(String, 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 方法不会尝试对返回的路径进行root。 (也就是说,如果 path2 或 path2 是绝对路径,Join 方法不会像 Combine 方法那样丢弃之前的路径。
并非所有目录和文件名的无效字符都被 Join 方法解释为不可接受的,因为您可以将这些字符用于搜索通配符。例如,虽然 Path.Join("c:\", "temp", "*.txt") 在创建文件时可能无效,但它作为搜索字符串是有效的。因此,Join 方法成功地解释了它。