这可以通过foreach循环来完成。但是.. while / for也应该有效。如果我有一个MyClass类,并写入100个MyClass对象。当我反序列化时,如何在文件末尾停止?在此先感谢
FileStream inStr = new FileStream(@"file.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
MyClass myclass = new MyClass();
while (???) // What to put here? EOF / End of stream check
{
myclass = (MyClass)bf.Deserialize(inStr);
//...
}
答案 0 :(得分:4)
如果要保存并加载MyClass
的列表,为什么不保存List对象。
List<MyClass> list = new List<MyClass>();
// add to your list
FileStream stream = new FileStream(@"file.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, list);
stream.Close();
FileStream inStr = new FileStream(@"file.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
List<MyClass> list = bf.Deserialize(inStr) as List<MyClass>;
答案 1 :(得分:1)
也许试试这个:
while (inStr.Length != inStr.Position)
答案 2 :(得分:0)
我经常使用
While(Stream.Peek != -1)