面对序列化的问题

时间:2010-03-04 14:16:03

标签: c#

HI 这是我的场景,我必须将对象序列化为文件。

我正在使用binaryformatter将对象序列化为

            IFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream1, object);

我正在编写GetObjectData(),如下所示,

            serinfo.AddValue("string1",objecta);
            serinfo.AddValue("string2",objectb);
            serinfo.AddValue("string3",objectc);

我在objectb中序列化2个列表list1,list2。列表的大小随时间而变化。(每个列表也可能有100000个元素..表示列表中元素的数量会影响流的大小)。所以,当我序列化对象时,我的流大小不应超过10mb而如果它超过我应该写在另一个流。简单地说,如果大小超过10mb,我应该再有一个流,每个流应该采用以下格式

stream1 --> objecta,(objectb)some n values in list,objectc
stream2 --> objecta,(objectb)values in list from n+1 to some m,objectc
 ..
streamn --> ........

每个流的大小应限制在10mb ..

请提供一些线索来做到这一点.. 提前致谢.. (首先感谢阅读这个大的qn ..:P)

3 个答案:

答案 0 :(得分:1)

我想我会将我的对象序列化为一个MemoryStream,然后检查将它添加到当前文件流中是否会超过10MB,并在写入之前启动一个新流。如果愿意的话。

答案 1 :(得分:0)

您无法直接执行此操作,因为只能将一个流传递给Serialize方法。使用MemoryStream作为目标,然后手动传播到流或在序列化之前将初始对象分解为碎片

答案 2 :(得分:0)

我建议您将流与序列化分开。也就是说,序列化为一个流(必要的长度),并将该流分别分成10Mb块。