【问题标题】:deserializing specific property of binary file using c#使用c#反序列化二进制文件的特定属性
【发布时间】:2015-03-02 22:43:16
【问题描述】:

我遇到了以下问题,我有一个自定义文件类型,我希望它显示在其中序列化的特定图像(此文件以二进制序列化)但我的文件大小可以达到 Gb 大小。

因此,为了避免由于文件可能过大而导致的性能问题,我想反序列化图像的属性,而不必反序列化文件包含的所有不必要的信息。

这可能吗?

【问题讨论】:

  • 这完全取决于文件格式。 Binary 不是一种格式,而是一个术语,表示什么文件是 some format 而不是文本。通常不同的文件格式具有标题、数据、属性等。如果您知道文件中的location(位置),则可能通过只读标题定位然后只读您需要的属性来实现。
  • 感谢@Sinatr,这正是我所需要的,但我已经意识到我想要反序列化的属性不是在一个恒定的位置,我也没有必要的信息来数学上找到它。我必须使用生成文件的程序打开文件,然后获取我需要的信息。
  • 文件格式是你设计的吗?然后你可以简单地使用现有的序列化器来序列化/反序列化 header/properties/data。查看protobuf.net。文件格式可以是:格式标签、标头大小、标头、数据。然后你只需读取格式标签以确保它是你的格式,然后是大小,然后是标题,然后反序列化标题并获取标题属性。
  • 你用什么序列化的?它是什么格式的?

标签: c# .net binary deserialization


【解决方案1】:

我不确定是否正确理解了您的问题,但您应该使用 FileStream 手动解码文件并仅提取包含图像的文件块

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2012-01-04
    • 2023-03-10
    • 2011-06-08
    • 2020-03-07
    • 1970-01-01
    • 2018-10-07
    • 2010-11-08
    • 2014-01-04
    相关资源
    最近更新 更多