如何从特殊文件夹转换为完整的文件名

问题描述:

有没有办法将特殊文件夹路径转换为完整的文件名(或后退)还是需要自己编写代码(并不难,我知道,但没有意义,如果它存在)如何从特殊文件夹转换为完整的文件名

例如我想存储应用程序模板的文件名,然后用户可以更改它,它存在于LocalApplicationData文件夹中。

我想储存什么格式的文件的位置:

%LOCALAPPDATA%\ MyApp的\模板\报告Template.xls

,使该应用程序文件可以被许多人使用用户,每个用户打开它时都会从他们自己的本地应用程序目录中获取报告模板。

我可以写

replace("%LOCALAPPDATA%", _ 
    System.Environment.GetFolderPath(
     System.Environment.SpecialFolder.LocalApplicationData)) 

and vice versa 

我来的时候要保存文件的位置,但是有没有System.IO(或类似)打电话为我做到这一点,而不是去通过各种可能的特殊夹?

看:Environment.ExpandEnvironmentVariables

一些环顾四周,我不认为有可用的内置的方式将其转换回,虽然之后。

你可以这样做,但:

static void Main(string[] args) 
{ 
    var values = Enum.GetValues(typeof(Environment.SpecialFolder)); 

    foreach (Environment.SpecialFolder value in values) 
     Console.WriteLine(value + " : " + Environment.GetFolderPath(value)); 

    Console.ReadKey(); 
} 
+0

啊......我真的不应该在早上没有喝杯咖啡。 – 2008-11-07 10:19:17

正常的Windows的方式来识别“文件夹专用”是他们的CSIDL。 Environment.SpecialFolder只是一个小包装。正如你所指出的,在对chakrit的文章发表评论时,大多数CSIDL根本没有相应的环境变量。这可能是为什么没有函数为少数CSIDL找到环境变量的可能原因。