2013-11-07 6 views
0

мне нужна помощь при добавлении вошедшего% USER% на путь, это мой код до сих пор:Объединить% USERPROFILE% в пути

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 и настройки \% USERPFORILE% \ Local Settings \ Temp

ответ

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"); 
    } 
} 
+0

Спасибо за вашу помощь, Im получение: "system.environment.specialfolder не содержит определение для 'UserProfile'" Почему? – user2681588

+0

Вы получаете ошибку (с вашего комментария к Радж Рао), потому что вам запрещен доступ к папке «Локальные настройки» ... Она защищена. – Noctis

+0

@ user2681588 Член 'UserProfile', похоже, был добавлен в перечисление' Environment.SpecialFolder' в .NET 4. – Spooky

0

I думаю, что это то, что вы на самом деле хотите:

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

использовать вместо папки Code Local Setting если вы хотите хранить данные или делать что-то.

(как мой комментарий сказал, папка Local установки защищена и таким образом, вы не сможете его открыть)

3

Просто хотел бы добавить, что в то время как Environment.SpecialFolder.UserProfile хороший ответ на ваш конкретный вопрос, есть также другой вариант, который работает для всех переменных окружения, а не только для тех, у кого есть аксессуар SpecialFolder: Environment.ExpandEnvironmentVariables.

Это займет строка, например, ваш @"%USERPROFILE%\Local Settings\TEST", и вернет новую строку со всеми переменными среды %%, расширенными.

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

Смежные вопросы