【发布时间】:2015-07-29 18:07:15
【问题描述】:
我正在尝试使用以下代码从文件中读取多个对象:
List<Alarm> list = new List<Alarm>();
BinaryFormatter serializer = new BinaryFormatter();
using (FileStream stream = File.OpenRead("//my File here"))
{
while (stream.Position < stream.Length)
{
list.Add((Alarm)serializer.Deserialize(stream));
}
}
但是,每次我尝试运行此代码时,都会收到类似“在解析完成之前遇到流结束”的错误。请注意,已经存在一个线程,建议在每次迭代后将流位置设置为 0,但这显然对我不起作用,否则我会陷入无限循环。
我在这里做错了什么?如果我省略了 while 循环,代码本身就可以工作,但显然在一个包含多个对象的文件中,我不只是想从我的文件中获取一个,而是所有的对象。
有什么建议吗?
编辑:按需:
序列化。
//Fetches Data from my GUI, creates a valid Alarm object
Alarm alarm = new Alarm(this.noticeBox.Text, date.Year, date.Month, date.Day, (int)this.hourPicker.Value, (int)this.minutePicker.Value);
var serializer = new BinaryFormatter();
using (FileStream stream = "//file"))
{
serializer.Serialize(stream, alarm);
}
【问题讨论】:
-
您能否提供一个简短但完整的程序来演示该问题,包括编写文件开头的代码?
-
你有没有想过另一种方法看看这个帖子stackoverflow.com/questions/29284671/…
-
有多少对象成功进入列表?应该有多少个对象?
-
你是如何序列化列表的?作为一个洞列表
?如果是这样,您只需将所有文件内容读入一个字节数组并调用一次反序列化。更不用说我建议在 FileStream 上使用 StreamReader -
警报类的代码在哪里?请提供它
标签: c#