如何在序列化期间不从文件中删除数据?

时间:2019-06-01 20:54:06

标签: c#

晚上好

我认识到当前使用C#语言编写的应用程序,不得不使用XmlSerializer进行序列化。

我必须能够将列表保存在xml文件中。然后,必须恢复该文件的数据才能恢复列表。我设法做到了所有这些,这是我的代码:

要保存列表:

Stream stream = File.OpenWrite(chemin);
           XmlSerializer xmlSer = new XmlSerializer(typeof(List<Utilisateur>));
           xmlSer.Serialize(stream,listeUtilisateurs);
           stream.Close();

要检索列表:

Stream stream = File.OpenRead(chemin);
            XmlSerializer xmlSer = new XmlSerializer(typeof(List<Utilisateur>));
            List<Utilisateur> listrecuperee = (List<Utilisateur>)xmlSer.Deserialize(stream);
            listeUtilisateurs = listrecuperee;
            stream.Close();

但是,问题在于,每次保存列表时,之前要保留的数据都会消失,我想保留它,实际上我希望它在文件之后写入。请问您有解决办法吗?亲切地

1 个答案:

答案 0 :(得分:0)

是的,我们可以做您想做的事。

要序列化到同一文件的代码:

int orderNumber = 2; // for example, read the second data collection in order

var xmlReaderSettings = new XmlReaderSettings
{
    ConformanceLevel = ConformanceLevel.Fragment
};

using (var reader = XmlReader.Create("test.txt", xmlReaderSettings))
{
    int count = 0;
    while (reader.ReadToFollowing("ArrayOfUtilisateur"))
    {
        count++;
        if (count == orderNumber)
            break;
    }
    var list = (List<Utilisateur>)xmlSer.Deserialize(reader);
}

用于读取一组数据的代码:

.... . ($isFirst ? ' checked' : '') . ...

当然,您在阅读时需要添加必要的检查。

这种使用单个文件的方式虽然很麻烦,但却很丑陋。因此,请考虑其他用于保存数据的选项。