在路径中合并%USERPROFILE%

时间:2013-11-07 06:29:16

标签: c# path temp

我需要帮助将当前记录的%USER%添加到路径中,这是我目前的代码:

DirectoryInfo dir = new DirectoryInfo(@"%USERPROFILE%\Local Settings\TEST");
foreach (FileInfo files in dir.GetFiles())
{
     files.Delete();
}
foreach (DirectoryInfo dirs in dir.GetDirectories())
{
    dirs.Delete(true);
}

如何让他以%USERPROFILE%作为当前用户? 我想要一个例子来解决问题,顺便说一句,我想用它来删除C:\ Document和settings \%USERPFORILE%\ Local Settings \ Temp

4 个答案:

答案 0 :(得分:4)

只是想补充一点,虽然Environment.SpecialFolder.UserProfile对您的具体问题是一个很好的答案,但还有另一个选项适用于所有环境变量,而不仅仅是那些具有SpecialFolder访问者的变量:{{3 }}。

它会占用一个字符串,就像你的@"%USERPROFILE%\Local Settings\TEST"一样,并返回一个新的字符串,其中扩展了所有%%环境变量。

答案 1 :(得分:3)

这个怎么样:

void Main()
{
    string userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
    string subFolder = @"Local Settings\TEST";
    string path = Path.Combine(userProfile, subFolder);

    DirectoryInfo di = new DirectoryInfo(path);
    if (di.Exists)
    {
        Console.WriteLine("Deleting " + di);
        di.Delete(true);//recursive
    }
    else
    {
        Console.WriteLine("Directory " + di + " was not found");
    }
}

答案 2 :(得分:0)

我认为这就是你真正想要的:

String appData = 
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

如果要存储数据或执行某些操作,请使用该文件夹而不是代码Local Setting文件夹。

(正如我的评论所说,本地设置文件夹受到保护,这样你将无法打开它)

答案 3 :(得分:0)

最好的方法是使用Environment.ExpandEnvironmentVariables

void Main() {
        string path = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\Local Settings\TEST");

        DirectoryInfo dir = new DirectoryInfo(path);
        foreach (FileInfo files in dir.GetFiles())
        {
            files.Delete();
        }
        foreach (DirectoryInfo dirs in dir.GetDirectories())
        {
            dirs.Delete(true);
        }
    }

https://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx