Entwickler-Ecke

IO, XML und Registry - Arrays in Streams


SportGoofy - Sa 17.11.07 16:27
Titel: Arrays in Streams
Hi!

Mein erstes größeres Programm in C läuft ganz gut.
Nur würde ich gerne einen Array speichern.
Hab aber beim bisherigen Lesen nix gefunden.
Gibt es da was spezielles in der IO bzw. bei Streams was besonderes?

Wäre schon, wenn mir jemand ein paar Stichworte
an den Kopf werfen könnte 8)


Christian S. - Sa 17.11.07 20:19

Ich nutze zum Speichern von Daten sehr gerne den XmlSerializer. Bei einem Array sollte das so gehen:

C#-Quelltext
1:
2:
3:
4:
5:
int[] myArr = new int[42];
/* ... füllen ... */
XmlSerializer xs = new XmlSerializer(typeof(int[]));
using(FileStream fs = File.Create(@"e:\\foo.xml"))
  xs.Serialize(fs , myArr);


SportGoofy - Mo 19.11.07 16:07

Ok, dass werde ich mir mal genauer anschauen. 8)

Gibt es eigentlich in C# auch so etwas wie record
in die ich mehrere Arrays packen kann?


Christian S. - Mo 19.11.07 16:21

Ein Record ist in C# ein Struct.


SportGoofy - Di 20.11.07 22:12

Hab jetzt das struct gebaut und scheint auch zu funktionieren.
Mit der Serialisation kann man ja im Prinzip den Zustand von allem abspeichern.
Hab ich gelesen :?

Bei meiner Recherche dazu wurde in einem Beispiel eine Klasse mit mmh Feldern :?:
gespeichert. Kann ich nun die Markierung [Serializable()] einfach vor mein struct schreiben und dann im obigen Quelltext bei fs, myArr - myArr durch den Namen des structs ersetzen und dann wird das struct im aktuellen Zustand gespeichert bzw. geladen mit dem entsprechenden Quellcode.

Hab ich das richtig verstanden?

Oder muß/sollte ich dann anstatt eines Struct eine Klasse erzeugen?


Christian S. - Di 20.11.07 22:57

user profile iconSportGoofy hat folgendes geschrieben:
und dann im obigen Quelltext bei fs, myArr - myArr durch den Namen des structs ersetzen und dann wird das struct im aktuellen Zustand gespeichert bzw. geladen mit dem entsprechenden Quellcode.
Hä? :nut:

Zeig mal Deinen Quelltext, das ist wahrscheinlich am einfachsten ;-)


Chryzler - Mi 21.11.07 17:22

Würde da aber eher eine Binär-Serialisierung benutzen, es sei denn du willst später den Inhalt der Datei auch von Hand mit nem Texteditor ändern können. BinaryFormatter soll schneller sein, und zudem kleinere Dateien erzeugen.