c#可序列化的对象XML文件位置

问题描述:

我有这个代码创建一个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文件夹中。需要对我的代码进行哪些修改才能实现此目的?

感谢

您需要解决当前用户的应用程序数据目录的路径。无论是与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