【问题标题】:How to deserialize or recover a binary serialized dictionary that's not finished serializing?如何反序列化或恢复未完成序列化的二进制序列化字典?
【发布时间】:2010-12-10 11:29:35
【问题描述】:

当我使用我的应用程序时,它试图序列化一个 300 KB 的字典。由于没有磁盘空间,它只能写入 292 KB。有没有办法成功反序列化其中的任何内容?

我使用了 BinaryFormatter,如果我丢失了一些元素,那比丢失整个字典要好。

当我反序列化时,我得到了这个异常:

    e.Message   "The input stream is not a valid binary format. The starting contents (in bytes) are: 20-01-20-20-20-FF-FF-FF-FF-01-20-20-20-20-20-20-20 ..."

【问题讨论】:

    标签: c# .net serialization binaryformatter


    【解决方案1】:

    分离二进制流确实需要大量有关实现的知识。 BinaryFormatter 是专有的,所以......除非这些数据真的很有价值,否则认为它丢失可能更便宜。你可以做很多乱码,但这并不容易,而且开发时间也不便宜。

    我并不是说它不能不过。 FWIW,我可以为其他一些序列化程序考虑这样做的方法 - 只是不是BinaryFormatter

    【讨论】:

    • 谢谢马克。你说的乱跑是什么意思?你的意思是喜欢使用正则表达式?我在里面看到了我需要的 ascii 格式的信息,我可以用它来提取它们,然后使用正则表达式将它添加到一个新文件中,但不确定它是否可靠?另外,当您说它是专有的时,您的意思是代码明智吗?你可以看到他们是如何使用反射器的,对吧?还有哪些序列化程序可以做到这一点? Xml? (虽然他们不支持字典)
    • “乱码”是指杂乱无章的工作。是的,您可以使用反射器;我不确定这是否会更容易。大多数文本格式很容易被截断;还有一些具有开放格式的二进制文件。
    猜你喜欢
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多