我正在创建一个错误日志库,它在指定的位置创建一个文件,然后将错误信息保存在该文件中,然后可以通过我打算联合编写的单独的任务程序读取该错误信息与这个图书馆。序列化和反序列化多个对象
说,我已把它的方式是二进制格式(使用BinaryFormatter()
和FileStream()
),其中序列化一个名为ErrorEntry类到文件,并将其附加到文件末尾。这意味着我有一系列ErrorEntries紧接着。我没有将它作为列表,因为从文件中读取所有信息到列表中,添加条目,然后将其保存回文件并转储资源似乎并不实际。只需要执行单个写入命令,并将每个命令存储为自己的序列化对象似乎更加有效。
我的问题是,我可以找到几个序列化列表或单个对象的例子,但没有多个 - 但单独的对象。虽然我想将它们保存为单个对象,但在加载它们时,我想读取对象并将该系列作为该对象的列表返回。我想有类似的东西
while(!EOF)
{
//deserialize each object
//add individual object to a list
}
//return the list of objects
我该如何去反序列化每个对象从单个文件?它是否具有上述工作的内部标记,我只需检测它是否是文件的结尾,还是需要做其他操作才能读取它们?
你为什么不干脆把所有的物体放到'名单
@OndrejTucny他想追加到文件中而不加载所有以前的条目。 – weston 2013-05-07 10:22:18
他说为什么它看起来合理。要在对象级别反序列化,您必须在每次输入后编写分隔符序列,并在读取文件时对其作出反应。 – Tommi 2013-05-07 10:22:50