Ja, ich habe es in der Vergangenheit verwendet. Ich unterordnete DataSet einmal, um zu unterstützen, sich in einer Datei (über die ReadXML/WriteXML-Methode) zu persistieren. Als zusätzlichen Bonus habe ich beschlossen, dass es optional komprimiert werden kann (dies ist, wie Sie alle bereits wissen sollten, extrem effektiv mit Textdaten wie XML).
Ich benutzen das GZipStream Klasse (es mein Verständnis zu der Zeit, die im Zusammenhang DeflateStream lediglich GZIP ohne Header-Informationen waren war, oder so — Ich bin sicher, dass jemand mich auf diese korrigieren könnte). Es funktioniert ganz einfach, indem du auf einen anderen Stream schwingst und du dann den GZipStream an seiner Stelle verwendest. In meinem Fall war es ein Piggy-Backing auf einem FileStream.
ein MemoryStream gefüllt werden mit dem Ausgang des myDataSet.WriteXML()
Given, ich so etwas wie die folgenden haben:
if (CompressData)
{
// Write to memory
mStream = new MemoryStream();
Save(mStream);
mStream.Seek(0, SeekOrigin.Begin);
// Filter that through a GZipStream and then to file
fStream = new FileStream(Path.Combine(CacheFilePath, FileName + ".gz"),
FileMode.OpenOrCreate);
zipStream = new GZipStream(fStream, CompressionMode.Compress, true);
Pump(mStream, zipStream);
}
else
{
// Write straight to file
fStream = new FileStream(Path.Combine(CacheFilePath, FileName),
FileMode.OpenOrCreate);
Save(fStream);
}
Wo Save()
und Pump()
sind einfache Methoden wie folgt aus:
private void Pump(Stream input, Stream output)
{
int n;
byte[] bytes = new byte[4096]; // 4KiB at a time
while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
{
output.Write(bytes, 0, n);
}
}
public void Save(Stream stream)
{
AcceptChanges();
WriteXml(stream, XmlWriteMode.WriteSchema);
}
Tatsächlich enthält der 'System.IO.Packaging'-Namespace Klassen für die Arbeit mit Open Package Style-Paketen. Sie können es verwenden, um ZIP-Dateien zu erstellen (wenn Sie sich nicht um einige zusätzliche Dateien kümmern, die in Ihrem ZIP enthalten sein werden), aber es kann nicht verwendet werden, um * any * zip-Dateien zu öffnen. Weitere Informationen finden Sie in der [ZipPackage-Klassendokumentation] (http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage (v = V.85) .aspx). Diese Community ist dies nicht vorhanden in .NET 4.0 doc, ist aber immer noch gültig). – larsmoa