我正在制作一个错误日志库,它在指定位置创建一个文件,然后将错误信息保存在该文件中,然后可以由我打算与该库一起编写的单独的任务程序读取该文件。
我保存它的方式是二进制格式(使用BinaryFormatter()
and FileStream()
),我将一个名为 ErrorEntry 的类序列化到文件中并将其附加到文件末尾。这意味着我有一系列的 ErrorEntries 背靠背。我没有将它作为列表,因为必须将所有信息从文件中读取到列表中,添加一个条目,然后将其保存回文件并转储资源似乎不切实际。只需要执行一个写入命令,并将每个命令存储为自己的序列化对象似乎更有效。
我的问题是我可以找到几个关于序列化列表或单个对象的示例,但在多个但单独的对象上却没有。虽然我想将它们保存为单个对象,但当我加载它们时,我想读取对象并将系列作为该对象的列表返回。我想有类似的东西
while(!EOF)
{
//deserialize each object
//add individual object to a list
}
//return the list of objects
我将如何从单个文件中反序列化每个对象?它是否具有上述工作的内部标记,我只需要检测它是否是文件的结尾,还是我需要做其他事情来阅读它们?