Fast in jedem Softwareprojekt stellt man sich irgendwann die Frage, wie man die Einstellungen seines Programms oder eine kleine Datenmenge schnell und unkompliziert auf der Festplatte speichern oder davon laden kann. Zu diesem Zweck habe ich eine Helfer-Klasse erschaffen welches ein Objekt in XML oder Binär speichern kann. Die Klasse ist Generisch und in C# programmiert.

Beim serialisieren in XML ist darauf zu achten das nur ‚public‘ gekennzeichnete Felder und Eigenschaften einer Klasse in XML gespeichert werden.

Code snipped der Methoden (CSharp) zum schreiben und lesen in XML:

public static void WriteXml(TData data, string fileName)
{
  using (StreamWriter sw = new StreamWriter(fileName))
  {
    XmlSerializer xmlSer = new XmlSerializer(typeof(TData));
    xmlSer.Serialize(sw, data);
  }
}

public static TData ReadXml(string fileName)
{
  using (StreamReader sr = new StreamReader(fileName))
  {
    XmlSerializer xmlSer = new XmlSerializer(typeof(TData));
    return (TData)xmlSer.Deserialize(sr);
  }
}

Im gegensatz zum XML werden im Binär Format alle Member einer Klasse gespeichert. Auch die die als ‚private‘ gekennzeichnet sind. Hier der Code snipped zum schreiben und lesen im Binärformat:

public static void WriteBinary(TData data, string fileName)
{
  using (Stream fileStream = File.Open(fileName, FileMode.Create, FileAccess.Write))
  {
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(fileStream, data);
  }
}

public static TData ReadBinary(string fileName)
{
  using (Stream fileStream = File.Open(fileName, FileMode.Open, FileAccess.Read))
  {
    BinaryFormatter bf = new BinaryFormatter();
    return (TData)bf.Deserialize(fileStream);
  }
}