C#Path.Combine未使用AppData位置

时间:2018-05-24 15:48:20

标签: c#

我尝试访问AppData文件夹以根据需要创建/删除目录,但使用Path.Combine只会产生所需路径的一半。这就是我所拥有的:

string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"\Microsoft\Windows\Start Menu\SkillControl\");

测试字符串代替Directory.CreateDirectory,这是下一行(工作时)。以下是调试这些行的结果:

sPath: "C:\\Users\\[user]\\AppData\\Roaming"
test: "\\Microsoft\\Windows\\Start Menu\\SkillControl\\"

我期待"测试"导致完整的路径:

C:\\Users\\[User]\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\SkillControl\\

但它似乎忽略了组合功能。任何人都可以找出原因吗?

要在澄清之前澄清,sPath只是我确认Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)是否正在拉出正确位置的一种方式,我在做的时候会得到相同的结果

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
@"Microsoft\Windows\Start Menu\SkillControl\"));

1 个答案:

答案 0 :(得分:7)

你的第二条路径是绝对路径 - 它以反斜杠开头。该方法的行为是as documented

  

如果path2包含绝对路径,则此方法返回path2。

只需删除前导反斜杠就可以了。

string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"Microsoft\Windows\Start Menu\SkillControl\");