.NET - DataSet (von XML-Daten) in ZIP-Datei streamen?

8

Ich habe ein DataSet bestehend aus XML-Daten, ich kann dies einfach in eine Datei ausgeben:

%Vor%

Allerdings möchte ich die XML-Datei in eine ZIP-Datei oder eine andere Art komprimierter Datei komprimieren und dann diese Datei auf der Festplatte speichern, während die ZIP-Datei in 1MB-Chunks aufgeteilt wird. Ich möchte die unkomprimierte Datei nicht wirklich speichern und dann zippen und dann teilen.

Was ich speziell suche ist

  1. eine geeignete Komprimierungsbibliothek, in die ich XML streamen und die Zip-Datei (en) auf dem Datenträger speichern kann
  2. einige Beispiel C # -Code, die mir zeigen können, wie das geht.
Jonathan 21.10.2008, 22:17
quelle

6 Antworten

10

Ich habe es geschafft, den XML-Datenstrom eines DataSets mit der gzip-Komprimierung von .NET 2.0 zu komprimieren.

Hier ist der Blogpost, den ich vor ein paar Jahren darüber gemacht habe:

Daten lokal mit Komprimierung speichern

... und hier ist der Code, den ich der partiellen Klasse meines DataSet hinzugefügt habe, um die komprimierte Datei zu schreiben (der Blogpost hat auch den Lesecode):

%Vor%

Beachten Sie, dass dieser Code verschiedene Komprimierungsschemas basierend auf der Dateierweiterung verwendet. Das war rein, damit ich mit meinem DataSet einen Plan gegen den anderen testen konnte.

    
Matt Hamilton 21.10.2008, 22:25
quelle
2

Es gibt eine nicht so bekannte Packaging-API, die im 3.5-Framework enthalten ist. Die Assembly-Referenz ist in der GAC, WindowsBase genannt. Der System.IO.Packaging-Namespace enthält Zeug zum Erstellen von OPC-Dateien (z. B. OOXML), bei denen es sich um ZIP-Dateien mit XML und allem, was sonst noch gewünscht ist, handelt. Sie erhalten einige Extras, die Sie nicht benötigen, aber die ZipPackage-Klasse verwendet eine Streaming-Schnittstelle, um Inhalte iterativ hinzuzufügen.

    
flatline 22.10.2008 01:57
quelle
2

Dies funktioniert mit Streams oder Dateien, hat eine gute Lizenz und Quelle: Ссылка

Hier ist der Code, der genau das tut, was das ursprüngliche Poster verlangte: Schreiben Sie ein DataSet in eine Zip-Datei, die in 1mb Chunks unterteilt ist:

%Vor%     
denis phillips 22.10.2008 00:39
quelle
1

Das Framework enthält einige Klassen zum Komprimieren von Streams. Einer von ihnen ist GZipStream. Wenn Sie danach suchen, werden Sie viele Treffer finden. Hier ist ein von ihnen. Ich stelle mir vor, die Ausgabe würde einige zusätzliche Arbeit beinhalten.

    
Cristian Libardo 21.10.2008 22:26
quelle
1

Sie sollten Xceed Zip verwenden. Der Code würde so aussehen (nicht getestet):

%Vor%     
Martin Plante 22.10.2008 00:52
quelle
0

DotNetZip führt Zip-Komprimierung über Streams durch, macht aber keine mehrteiligen Zip-Dateien. : (

BEARBEITEN : Ab September 2009 kann DotNetZip mehrteilige Zip-Dateien erstellen.

    
Cheeso 09.03.2009 18:21
quelle

Tags und Links