c# - 如何反序列化或恢复未完成序列化的二进制序列化字典?

标签 c# .net serialization binaryformatter

当我使用我的应用程序时,在关闭时,它尝试序列化一个 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 ..."

最佳答案

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

不过,我并不是说不能完成。 FWIW,我可以想到为其他一些序列化程序执行此操作的方法 - 只是不是 BinaryFormatter

关于c# - 如何反序列化或恢复未完成序列化的二进制序列化字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630621/

相关文章:

c# - 为什么我的 appsettings.json 文件中的配置值不通过 Configuration.GetSection().Get<MyObject> 映射到我的自定义 POCO 对象的字段?

c# - .NET:接口(interface)问题 VB.net Getter Only Interface

java - 序列化枚举

serialization - 使用 Protocol Buffer 编码循环数据结构(例如有向图)

c# - 如何使用静态变量而不搞乱我的单元测试?

c# - 构建服务器上的 migrate.exe 想要 "start over"进行迁移

c# - 如何创建可编辑的微调器(选择器)?

c# - 如何将 const int 从托管 C++ DLL 传递到 C# 以用作属性中的字段值

c# - 位图类不处理流?

java - Retrofit2,我如何转换具有不同对象名称但相同数据类型的响应