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);
谢谢你的,它的伟大工程。不知道我是如何忽略这一点的 – nerdalert