【问题标题】:BinaryFormatter in C# a good way to read files?C# 中的 BinaryFormatter 是读取文件的好方法吗?
【发布时间】:2010-05-27 08:31:04
【问题描述】:

我想读取在我的程序之外创建的二进制文件。在 C# 中读取二进制文件的一种明显方法是定义表示文件的类,然后使用 BinaryReader 并通过 Read* 方法从文件中读取并将返回值分配给类属性。

我不喜欢这种方法的是我必须手动编写读取文件的代码,尽管定义的结构表示文件的存储方式。当我阅读时,我还必须保持正确的顺序。

看了一圈后,我发现了 BinaryFormatter,它可以自动序列化和反序列化二进制格式的对象。一个很大的优势是我可以在不创建额外代码的情况下读取和写入文件。但是我想知道这种方法是否适用于从其他程序创建的文件,而不仅仅是序列化的 .NET 对象。以 BMP 等图形格式文件为例。使用 BinaryFormatter 读取文件是个好主意,还是通过 BinaryReader 和 BinaryWriter 手动写入更好?或者还有其他更适合的方法吗?我不是在寻找具体的例子,而只是寻求建议,什么是实现它的最佳方式。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您必须非常幸运地找到恰好与 BinaryFormatter 输出的格式完美映射的外部文件格式。 BinaryFormatter 显然会添加有关您正在序列化的类型/事物以及数据本身的信息,而“正常”二进制文件格式通常是“这些字节就是这个,然后这些字节就是这个”。

    当我过去这样做时(最近想起了阅读 SWF 标头),我一直只是使用文件流并手动处理/映射它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2017-11-12
      • 1970-01-01
      • 2011-03-19
      • 2016-01-21
      • 1970-01-01
      相关资源
      最近更新 更多