1

这可能可以通过 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);
//...
}
4

3 回答 3

5

如果您想保存和加载您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>;
于 2012-11-05T17:35:02.663 回答
1

也许试试这个:

while (inStr.Length != inStr.Position)
于 2013-08-12T08:44:51.823 回答
0

我经常用

While(Stream.Peek != -1)
于 2012-11-05T17:34:17.710 回答