【发布时间】:2023-03-08 18:46:01
【问题描述】:
令我惊讶的是,这段代码没有产生预期的结果:
var basePath = @"\\server\BaseFolder";
var relativePath = @"\My\Relative\Folder";
var combinedPath = Path.Combine(basePath, relativePath);
结果是\My\Relative\Folder,而不是预期的\\server\BaseFolder\My\Relative\Folder。
这是为什么?组合可能有也可能没有斜线的相对路径的最佳方法是什么?
编辑: 我知道我可以对 relativePath 进行字符串操作来检测和删除起始斜线。有没有更安全的方法(我认为Path.Combine 应该是安全的方法)来解释反斜杠和前斜杠?
【问题讨论】:
-
这不是相对路径。
-
我会明白,如果前面有 2 个反斜杠,使其成为 UNC 路径,但只有一个斜杠?认真的吗?
-
是的;严重地。
\a\b是一个绝对路径。 (虽然它是相对于驱动器)
标签: c# .net-4.0 filesystems io