2016-04-28 2 views
0

У меня есть этот код, который создает XML-файл и сохраняет, установлен ли флажок true или false. Он читается при запуске приложенияC# Сериализуемый объект Размещение XML-файла

[Serializable()] 
[XmlRoot("Store", Namespace = "")] 
public class Credentials 
{ 
    public Credentials() { } 

    public bool checkBox1State { get; set; } 


    public static Credentials ReadCredentials() 
    { 
     XmlSerializer reader = new XmlSerializer(typeof(Credentials)); 
     System.IO.StreamReader file = new System.IO.StreamReader("Credentials.xml"); 
     Credentials data = new Credentials(); 
     data = (Credentials)reader.Deserialize(file); 
     file.Close(); 
     return data; 
    } 

    public static void WriteCredentials(Credentials data) 
    { 
     XmlSerializer writer = new XmlSerializer(typeof(Credentials)); 
     System.IO.StreamWriter file = new System.IO.StreamWriter("Credentials.xml"); 
     writer.Serialize(file, data); 
     file.Close(); 
    } 
} 

Моя программа отлично читает и пишет из XML-файла. Однако я заметил, что это хранится в корневом каталоге, откуда был запущен .exe. Как правило, это будет в программных файлах, для которых требуются повышенные разрешения для записи.

Как таковой, я хотел бы сохранить этот файл в папке AppData пользователя. Какие изменения необходимы для моего кода для этого?

Благодаря

ответ

1

Вам необходимо разрешить путь к папке AppData текущего пользователя. Либо с SpecialFolder Enum

string fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "Credentials.xml") 

или расширяя переменную окружения

string fileName = Environment.ExpandEnvironmentVariables(@"%AppData%\Credentials.xml"); 

И использовать его вместо realtive файла

System.IO.StreamReader file = new System.IO.StreamReader(fileName); 
+0

Спасибо, он прекрасно работает. Не знаю, как я это пропустил – nerdalert

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