2015-11-21 3 views
0

Я учил себя, как закодировать в последнее время, потому что мне скучно. Я пытаюсь загрузить файл XML при запуске и поместить содержимое этого файла в список, а затем сохранить содержимое списка в файл при закрытии. Это именно то, что у меня есть сейчас. Однако я хочу иметь возможность загружать из AppData, а также сохранять обратно в папку AppData без ввода полного пути. Я пробовал использовать «% AppData%/Roaming/MyApp/data.xml», но это не работает и выдает исключение.Как сохранить и загрузить XML-файл в AppData?

Вот что я сейчас:

StreamReader sr = new StreamReader("data.xml"); 
      line = sr.ReadLine(); 
      while (line != null) { 
       Streamers.Items.Add(line); 
       line = sr.ReadLine(); 
      } 
      Streamers.DataSource = line; 
      Streamers.Sorted = true; 
      sr.Close(); 
      Console.ReadLine(); 
+0

В чем исключение? –

ответ

2

Вы можете использовать GetFolderPath

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Также вы можете проверить this answer для получения дополнительной информации.

Update

Обратите внимание, что вы должны обладать правами администратора, чтобы получить доступ к этой папке.

Access denied Для ошибки проверить эти два ответа:

Number one

%AppData% Каталог представляет собой систему-защищенный каталог. Windows попытается заблокировать любой доступ к этому каталогу, как только не будет разрешен доступ (доступ от другого пользователя, кроме администратора ).

Number two

Я хотел бы использовать System.IO.Path.Combine(...) вместо string.Conact(...) в этой ситуации. Как это ...

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
"Programım"); 
+0

Мне удалось создать папку, но я не могу сохранить там XML. Я получаю доступ, которому запрещено исключение. –

+0

Хорошо. Мне удалось записать в папку AppData. Большое спасибо. Теперь, как я прочитал оттуда? Раньше я просто использовал StreamReader sr = новый StreamReader («data.xml»); который только что прочитал локально найденный, а не тот, который находится в appdata –

+0

@JarrettMitchell попробуйте 'string path = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData); StreamReader sr = новый StreamReader (путь + "\\ data.xml"); ' –