2010-07-30 80 views
4

我收到了封装在struct中的一些数据(很多次)。我需要做的是将它们写入文件(二进制)以恢复数据。你会怎么做?将结构数据写入二进制文件

+0

你可能想看看这个:http://stackoverflow.com/questions/628843/byte-for-byte-serialization-of-a-struct-in-c – 2010-07-30 13:36:32

+0

你需要把它写以特定的格式(例如,由另一个程序读取),或者只是为了保存一些状态并再次从同一程序中读取它?在后面的情况下,我会建议声明struct [serializable](和所有自定义成员类型),并将其序列化为文件。 – Grizzly 2010-07-30 13:37:24

+1

我正要回答“让我Google给你”,但我可能会得到许多upvotes ... – Luiscencio 2010-07-30 13:45:27

回答

6

执行ISerializable(更大的自定义)或标记[Serializable]属性(更易于使用)。然后使用BinaryFormatter来序列化为一个文件。

1
public struct MyStruct : ISerializable 
    { 
     #region ISerializable Members 

     public void GetObjectData(SerializationInfo info, StreamingContext context) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 

     public override int GetHashCode() 
     { 
      return base.GetHashCode(); 
     } 

     public override bool Equals(object obj) 
     { 
      return base.Equals(obj); 
     } 

     public static bool operator ==(MyStruct m1, MyStruct m2) 
     { 
      return true; 
     } 

     public static bool operator !=(MyStruct m1, MyStruct m2) 
     { 
      return false; 
     } 
    }