C#中的BinaryFormatter是一种读取文件的好方法吗?

时间:2010-05-27 08:31:04

标签: c# .net

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

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

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

1 个答案:

答案 0 :(得分:2)

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

当我在过去完成此操作时(最近想到了SWF标题)我总是只使用文件流并手动处理/映射它。