我正在尝试访问 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\\
但是好像忽略了combine的功能。任何人都可以找出原因吗?
在询问之前澄清一下,sPath
只是我确认 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
是否拉到正确位置的一种方式是的,我在做
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
@"Microsoft\Windows\Start Menu\SkillControl\"));
最佳答案
您的第二条路径是绝对路径 - 它以反斜杠开头。该方法正在运行 as documented :
If path2 contains an absolute path, this method returns path2.
只需删除前导反斜杠即可。
string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"Microsoft\Windows\Start Menu\SkillControl\");
关于C# Path.Combine 没有使用 AppData 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513427/