2010-05-27 154 views
2

我想讀取一個在我的程序之外創建的二進制文件。在C#中讀取二進制文件的一個顯而易見的方法是定義表示文件的類,然後使用BinaryReader並通過Read *方法從文件讀取並將返回值分配給類屬性。C#中的BinaryFormatter是讀取文件的好方法嗎?

我不喜歡的方法是我手動編寫代碼來讀取文件,雖然定義的結構表示文件的存儲方式。閱讀時,我還必須保持訂單正確。

看了一下後,我發現BinaryFormatter可以自動序列化和反序列化二進制格式的對象。一個很大的優點是我可以讀取並寫入文件,而無需創建額外的代碼。不過,我不知道這種方法是否適用於從其他程序創建的文件,而不僅僅是序列化的.NET對象。以例如BMP等圖形格式文件爲例。用BinaryFormatter讀取文件是否是個好主意,還是通過BinaryReader和BinaryWriter手動寫入更好?或者還有其他更適合的方法嗎?我不是在尋找具體的例子,而只是尋求建議,最好的實現方式是什麼。

回答

2

你必須非常非常幸運地找到一個外部文件格式,它恰好映射到BinaryFormatter輸出的格式。 BinaryFormatter明顯增加了序列化類型/東西以及數據本身的信息,而「正常」二進制文件格式通常是「這些字節就是這個,然後這些字節就是這個」。

當我在過去完成這項工作(最近閱讀SWF頭文件時想到的),我總是使用文件流並手動處理/映射它。

相關問題