我正在使用序列化进行编写,将一些联系人的姓名和电话附加到文件中,我通过将每个联系人附加到文件中来单独编写。
我想从文件中读取这些联系人并将它们放在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}));
如何阅读所有联系人? 或者我怎么知道流已结束?
答案 0 :(得分:0)
这取决于它是哪种流。例如,NetworkStream
永远不会结束(因为TCP是基于流的)。当FileStream
返回0个字节时,Read
将结束。
答案 1 :(得分:0)
您可以针对流Position
属性检查流Length
属性,假设您正在引用文件流