Entwickler-Ecke

IO, XML und Registry - List<T> in Datei speichern


Held123 - Sa 27.03.10 12:43
Titel: List<T> in Datei speichern
Hallo,

ich habe eine List<T> die mit Strings gefüllt ist, und diese List<T> würde ich gerne in eine Datei Speichern.
Aber ich weiss egentlich nich wie man halt so ne List Speichern kann.

kann mir das jemand erklären wie das geht? oder mir nen Link geben?

danke


jfheins - Sa 27.03.10 12:51

Es gibt so viele Möglichkeiten ^^

Du könntest zum Beispiel nen xml-serializer verwenden - hier mal ein kleiner Codeausschnitt:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
List<int> data = new List<int>();
            var x = new XmlSerializer(
                data.GetType(),
                new Type[] { typeof(int) }
                );
            TextWriter writer = new StreamWriter(@"../../../konfig.xml");
            x.Serialize(writer, data);
            writer.Close();

So ungefähr ( hab ein bisschen was weggenommen, bin mir nicht sicher ob das so läuft)
Dafür musst du aber wiussen, von welchen Typen deine Elemente sein können (musst du dem xmlserializer in dem 2. Parameter übergeben)

Oder meinst du eine ganz allgemeine List<T> ?


norman2306 - Sa 27.03.10 13:05

geht aber auch als generische Methode:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public void SaveXML<T>(List<T> data, string path)
{

        using(var x = new XmlSerializer(data.GetType(), new Type[] { typeof(T) }))
  {
            using(TextWriter writer = new StreamWriter(@"../../../konfig.xml"))
            {
                x.Serialize(writer, data);
            }
  };

}


Held123 - Sa 27.03.10 13:44

könntet ihr mir den Code irgentwie genauer erklären?
Weil ich kann zum beispiel nix mit serializer nix anfangen.

also meine List sieht so aus


C#-Quelltext
1:
List<String> ListeGer = new List<String>();                    


und die habe ich jetzt mit .Add(); gefüllt und ich will die ListeGer nun in eine Datei speicher damit ich sie zu nem anderen Zeitpunkt wieder laden kann und verwenden kann


JüTho - Sa 27.03.10 14:00

Die Erklärungen sind alle in der SDK-Doku/MSDN/Hilfe zu finden, in der Regel auch mit Beispielen. (Beispiele, die dir im Forum vorgesetzt werden, stammen sehr oft per Copy&Paste aus der Hilfe.)

Du hast alle nötigen Stichworte beisammen, z.B. die Klasse XmlSerializer und die Methode Serialize.

Darüberhinaus gibt es eine Einführung durch OpenBook VC# [http://openbook.galileocomputing.de/visual_csharp], und bei den Stichworten findest du ebenfalls Serialisierung.

Gruß Jürgen


Kha - Sa 27.03.10 14:24

Wenn es nur um Strings, die keinen Zeilenumbruch enthalten, geht, würde ich zuallererst File.Read/WriteAllLines in Betracht ziehen ;) .