如何在 C # 中连接两个文件路径?
你必须使用 Path.Combine(),如下例所示:
string basePath = @"c:\temp"; string filePath = "test.txt"; string combinedPath = Path.Combine(basePath, filePath); // produces c:\temp\test.txt
组合() 是您所需要的。
Path.Combine(path1, path2);
连接方法
Join(String, String)
来自 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
与“组合”方法不同,“联接”方法不尝试根植返回的路径。(也就是说,如果 path2或 path2是一个绝对路径,那么 Join 方法不会像组合方法那样丢弃前面的路径。
并非所有目录和文件名的无效字符都被 Join 方法解释为不可接受,因为您可以使用这些字符来搜索通配符。例如,当 Path。加入(“ c:”,“ temp”,”* 。“ txt”)在创建文件时可能无效,它作为搜索字符串是有效的。因此,Join 方法成功地解释了它。