繁体   English   中英

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

[英]c# Serializable object XML file location

我有这段代码可以创建XML文件并存储复选框是true还是false。 在应用程序启动时读取

[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文件夹中。 为此,需要对我的代码进行哪些修改?

谢谢

您需要解析当前用户的AppData目录的路径。 使用SpecialFolder枚举

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

或通过扩展环境变量

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

并使用它代替真实的文件名

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM