2010-07-30 78 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; 
     } 
    }