编辑保存为二进制文件的对象

时间:2018-01-20 21:22:49

标签: c# serialization

我在C#中创建了一个序列化对象(例如student),并以这种方式将其保存为二进制文件:

public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, 
bool append = false)
{
    using (Stream stream = File.Open(filePath, append ? FileMode.Append : 
    FileMode.Create))
    {
        var binaryFormatter = new 
        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream, objectToWrite);
    }
}

所以现在我想更改学生的名字并保存已编辑的学生对象,但我不想删除以前的文件并替换以前编辑的新文件,但我只是想应用更改原始文件。

这就像我想改变一个人的名字,而不是杀死他!并创建一个类似于原始人但具有新名称的人。

1 个答案:

答案 0 :(得分:0)

您无法编辑二进制序列化对象。您必须对其进行反序列化才能编辑任何内容。

让我建议一种替代方法。如果您只是在将学生数据保存到文件中以便以后加载和使用它,则可以将序列化方法从二进制更改为XML(Serialize an object to XML)XML格式允许您查找和编辑文件中的特定字段,因为它将以简单的“原样”形式保存。然后你可以编辑它,而无需将所有内容加载到内存中,并最终覆盖原始文件(Replace part of large XML file)这篇博文有一个具体的例子:https://blogs.msdn.microsoft.com/mfussell/2005/02/12/combining-the-xmlreader-and-xmlwriter-classes-for-simple-streaming-transformations/

相关问题