2016-04-28 36 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

您需要解決當前用戶的應用程序數據目錄的路徑。無論是與SpecialFolder枚舉

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