C# Path.Combine 没有使用 AppData 位置

标签 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\\

但是好像忽略了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/

相关文章:

c# - 将 C# 转换为 NodeJS

c# - 使用特定的模式来实现接口(interface)

c# - ASP.net MVC : why is AreaRegistration. RegisterAllAreas() 这么慢?

c# - MongoDb c# 驱动程序 2.0 任意多对多

c# - 带有附属对象的列表的优点/缺点

c# - 使用 API 更新 Google Docs 中的文档?

c# - 使用 2D 相机进行骨骼跟踪

c# - 我无法弄清楚的 Visual Studio 2010 引用错误

c# - DragStarted 事件未进入 UWP slider - c#

c# - 带有 CosmosDB 的 .NET Core 中的存储过程给出错误 500