我怎么知道Stream结束了?

时间:2011-06-30 11:12:22

标签: c# .net stream

我正在使用序列化进行编写,将一些联系人的姓名和电话附加到文件中,我通过将每个联系人附加到文件中来单独编写。

我想从文件中读取这些联系人并将它们放在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}));

如何阅读所有联系人? 或者我怎么知道流已结束?

2 个答案:

答案 0 :(得分:0)

这取决于它是哪种流。例如,NetworkStream永远不会结束(因为TCP是基于流的)。当FileStream返回0个字节时,Read将结束。

答案 1 :(得分:0)

您可以针对流Position属性检查流Length属性,假设您正在引用文件流