【发布时间】:2011-06-30 11:12:22
【问题描述】:
我正在使用序列化写入将一些联系人及其姓名和电话附加到文件中,我通过将每个联系人附加到文件中来单独写入。
我想从文件中读取这些联系人并将它们放在 ListView 中。
Stream stream = File.Open("Contacts.dat", FileMode.Open);
BinaryFormatter BFormatter = new BinaryFormatter();
Contacts contact = (Contacts)BFormatter.Deserialize(stream);
listView1.Items.Add(new ListViewItem(new string[] { "", contact.name, contact.phone }));
执行上述代码后,我只得到一个联系人,如果我再次反序列化流,我会得到下一个联系人
Contacts contact2 = (Contacts)BFormatter.Deserialize(stream);
listView1.Items.Add(new ListViewItem(new string[] { "", contact2.name, contact2.phone}));
如何读取所有联系人? 或者我怎么知道流已经结束?
【问题讨论】:
-
我建议查看 BFormatter 类的文档。这个类不是.net的一部分
-
为什么他自己的课程与问题相关?
-
这与 Deserialize 方法从流中获取数据的方式有关。这应该告诉他他需要如何退出从流中获取所有联系的循环。
-
考虑序列化一个数组或 List。如果这不合适,那么您必须从流属性中检测文件结尾。
-
List 不起作用......可能是因为我每次都附加序列化的联系人......然后每次在新联系人中添加序列化的标题......我是不确定但我试了一下,得到一个错误“无法投射”