Sie können versuchen, es als serialisiertes Objekt entweder XML oder Binär zu speichern. Sie müssten die Klassen markieren, die mit dem Attribut serialisiert werden. Generische Sammlungen sind bereits serialisierbar.
[Serializable]
public class Node
{
...
}
[Serializable]
public class Trie
{
...
}
XML speichern
var trie = new Trie();
using (var fs = new System.IO.FileStream("path", FileMode.CreateNew, FileAccess.Write, FileShare.None))
{
Type objType = typeof (Trie);
var xmls = new XmlSerializer(objType);
xmls.Serialize(fs, trie);
}
XML laden
XmlSerializer xmls = new XmlSerializer(typeof(Trie));
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
return xmls.Deserialize(fs) as Trie;
Binary Speichern
var trie = new Trie();
using (var fs = new System.IO.FileStream("path", FileMode.CreateNew,
FileAccess.Write))
{
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(fs, trie);
}
Binary Last
using (var fs = new FileStream("Path", FileMode.Open, FileAccess.Read))
{
var bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
return bf.Deserialize(fs) as Trie;
}
Was ist der Unterschied zwischen den beiden? Und wie (un) portabel sind diese Lösungen? Wenn ich eine Release-Version meiner App mache, funktioniert sie dann auf allen Windowsen (mit .NET)? – Jecke
So, meine Erfahrung mit der Serialisierung ist, dass XML zwischen Versionen des Programms sicherer ist, aber binär ist schneller und wird höchstwahrscheinlich zu einer viel kleineren Dateigröße führen. Wenn Sie eine Datei mit binary serialisieren, ist sie ziemlich an eine Version der Klasse gebunden, das Programm kann aktualisiert werden, aber das Ändern der serialisierten Klasse bricht normalerweise die Fähigkeit zum Laden der Datei, es sei denn, Sie implementieren ISerializable und führen alle Serialisierungsfunktionen selbst aus. XML ist sicherer zwischen Revisionen, aber würde viel Overhead in der Sicherungsdatei in Form von Formatierung enthalten. Beide sind tragbar. –
Ich habe versucht, binäre Serialisierung (ich kopierte einfach Ihren Code, Ändern von 'Trie' zu meinem Trie mit geladenen Polnisch Wörterbuch und '" Pfad "' '' 'dict.xml" ') und die Datei, die ich bekam, ist ziemlich groß: 54,2 MB (im Gegensatz zu 37,9 MB dictionary.txt). Ich habe versucht, es zu laden (wieder, kopieren Sie einfach Ihren Code ändern 'Rückkehr' zu 'Trie my_dictionary ='), aber es ist entweder stecken oder laden für ein paar Minuten jetzt ... Mache ich etwas falsch oder gibt es ein anderes Problem? – Jecke