【发布时间】:2015-04-03 03:10:23
【问题描述】:
我正在尝试将序列化对象写入和读取到二进制文件。我正在使用 Append FileMode 添加序列化对象,但是当我尝试读取文件时,它只打印一个反序列化对象。
这是我的序列化方法。
public void serialize(){
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Append, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close()
}
这是我的反序列化方法。
public static void read()
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
MyObject obj = (MyObject)formatter.Deserialize(stream);
stream.Close();
// Here's the proof.
Console.WriteLine("n1: {0}", obj.n1);
Console.WriteLine("n2: {0}", obj.n2);
Console.WriteLine("str: {0}", obj.str);
}
我们如何遍历文件中的每条序列化记录,就像我们在 C++ 中使用 File.eof() 或 while(file.read()) 一样。
【问题讨论】:
标签: c# file serialization