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

时间:2008-11-07 10:00:40

标签: .net windows-vista windows-xp

有没有办法将特殊文件夹路径转换为完整文件名(以及后面)或者我需要自己编写代码(我知道并不难,但如果存在则没有意义)

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

我想要存储的是文件的格式:

%LOCALAPPDATA%\ MyApp \ Templates \ Report Template.xls

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

我可以写

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

and vice versa

当我来保存文件位置时,是否有一个System.IO(或类似的)调用为我这样做,而不是必须通过每个可能的特殊文件夹?

2 个答案:

答案 0 :(得分:4)

请注意: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();
}

答案 1 :(得分:0)

标识“特殊文件夹”的正常Windows方式是CSIDL。 Environment.SpecialFolder只是它周围的一个小包装器。正如您所指出的,在对chakrit帖子的评论中,大多数CSIDL根本没有相应的环境变量。这可能是为什么没有函数为少数CSIDL找到环境变量的原因。