.Net使用特殊文件夹符号

我想能够做到这样的事情:

IO.Directory.Exists("%USERPROFILE%") 

原因是我想指定一个我的应用程序将使用的目录,作为configuration文件中的纯文本。 在某些情况下,我会希望它嵌套在用户configuration文件下,在这种情况下,configuration文件会读取如下内容:

 ... LocalDbDirectory = %USERPROFILE%\Application Data\My Toolkit\ ... 

或者我可能希望它位于networking位置,在这种情况下,它会读取如下内容:

 ... LocalDbDirectory = N:\Common\My Toolkit Databases\ ... 

所以我需要能够用诸如IO.Directory.Exists(…)或等价的方法来解释速记符号。

有任何想法吗?

你需要通过Environment.ExpandEnvironmentVariables(path)来运行它们。 其中路径是@"%USERPROFILE%\Application Data\My Toolkit\" (对于不包含%%格式化的标记的路径,这样做不会有什么坏处)

如果短手是有效的环境变量,则可以解析它们的值:

  static void Main(string[] args) { string val = Environment.ExpandEnvironmentVariables("%USERPROFILE%"); Console.WriteLine(val); Console.Read(); } 

从.NET 4开始,特殊文件夹支持包括用户配置文件:

 Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);