【发布时间】:2010-05-27 08:31:04
【问题描述】:
我想读取在我的程序之外创建的二进制文件。在 C# 中读取二进制文件的一种明显方法是定义表示文件的类,然后使用 BinaryReader 并通过 Read* 方法从文件中读取并将返回值分配给类属性。
我不喜欢这种方法的是我必须手动编写读取文件的代码,尽管定义的结构表示文件的存储方式。当我阅读时,我还必须保持正确的顺序。
看了一圈后,我发现了 BinaryFormatter,它可以自动序列化和反序列化二进制格式的对象。一个很大的优势是我可以在不创建额外代码的情况下读取和写入文件。但是我想知道这种方法是否适用于从其他程序创建的文件,而不仅仅是序列化的 .NET 对象。以 BMP 等图形格式文件为例。使用 BinaryFormatter 读取文件是个好主意,还是通过 BinaryReader 和 BinaryWriter 手动写入更好?或者还有其他更适合的方法吗?我不是在寻找具体的例子,而只是寻求建议,什么是实现它的最佳方式。
【问题讨论】: