Laden...

Zippen mit .NET-Boardmitteln: Möglichkeiten, Grenzen und Alternativen

Erstellt von ViperNeo vor 14 Jahren Letzter Beitrag vor 12 Jahren 3.166 Views
V
ViperNeo Themenstarter:in
352 Beiträge seit 2008
vor 14 Jahren
Zippen mit .NET-Boardmitteln: Möglichkeiten, Grenzen und Alternativen

Hallo Leute,

kann mir jemand auf die Sprünge helfen bezüglich der Generierung von ZIP Files? Ich möchte keine thirdparty lib nutzen sondern mich mal selber ranwagen. Gibt es bordmittel von c#?

danke!

grüße
viperneo

1.346 Beiträge seit 2008
vor 14 Jahren

Boardmittel gibt es zwar ein paar, aber kein zip. System.IO.Compression-Namespace

nur Gzip und Deflate. Guck dir mal die SharpZipLib an. da bekommst du den source mit und kannst dir den anschauen.

Gruß pdelvo

N
4.644 Beiträge seit 2004
vor 14 Jahren

ab .NET Framework 3.0: ZipPackage Class

2
25 Beiträge seit 2010
vor 12 Jahren
ZipPackage - Leerzeichen im Dateinamen

Gibt es einen Trick ZipPackage zu überreden, auch Dateipfade mit Leerzeichen zu verarbeiten.
Die Leerzeichen mit Unterstrichen zu ersetzen, ist ja nicht wirklich eine elegante Lösung.
SharpZipLib und Co. kann doch sowas. Da müsste das doch auch mit Net Boardmitteln möglich sein. Wenn Ihr mir auf die Sprünge helfen könnte wäre ich dankbar.

76 Beiträge seit 2008
vor 12 Jahren

Wo liegt denn das Problem SharpZipLib zu benutzen? Wenn es dir um das Know-How geht, dann solltest du dich mit der Spezifikation und Informationen zum Zip-Format vertraut machen - am besten natürlich auf Englisch.

Zip (file format)
http://www.pkware.com/documents/casestudies/APPNOTE.TXT

5.742 Beiträge seit 2007
vor 12 Jahren

Wo liegt denn das Problem SharpZipLib zu benutzen?

im Not-invented-here-Syndrom

B
387 Beiträge seit 2005
vor 12 Jahren

Hallo ViperNeo,

in Packet-Dateien mit .Net Standardmitteln habe ich einen Weg beschrieben, wie man Zip-Dateien mit den Framework-Bordmitteln machen kann (System.IO.Packaging). Aber Achtung: Nicht alle Zip-Dateien können dadurch gelesen werden, da dieser Weg die "Open Packaging Conventions" von Microsoft voraussetzt, die dem OpenXML-Zeugs entstammen.

Ansonsten würd ich auch die SharpZipLib empfelen, habe ich auch schon öfters verwendet und klappt problemlos.

Gruß
Roland

2
25 Beiträge seit 2010
vor 12 Jahren

im Not-invented-here-Syndrom

Häufig werden Boardmittel vermieden, weil der Entwickler sie nicht richtig verstanden hat. Meine Fragestellung zielt darauf ab, ob ich zu blöd bin, die Boardmittel zu verstehen.
Weil es mir schon eigenartig vorkommt, dass so was triviales nicht möglich ist.

Häufig sehe ich unübersichtliche Konstrukte oder erstelle selber welche, die man mit Standart Net-Mitteln mit einer Zeile lösen kann, Sie aber halt nicht kennt.

Also es ist nicht so, dass wenns nicht geht, ich SharpZipLib nehme, aber ich will meine Horizont etwas erweitern.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo 278278,

vor Version 3.0 hat .NET sowieso nur Gzip untertützt. Aber GZIP != ZIP. GZip kann nur einzelne Datei komprimieren.

Mit Version 3.0 ist dann System.IO.Packaging hinzugekommen, aber mit den Einschränkungen, die Blacal genannt hat.

Das Framework kann zwar viel, und ich finde immer wieder was, wofür ich keine Unterstützung erwartet habe. Andersherum gibt aber eben auch ein paar weiße Flecken, wo man sie nicht erwartet.

herbivore

0
767 Beiträge seit 2005
vor 12 Jahren

Hab schon mehrmals mit DotNetZip gearbeitet und gute Erfahrungen damit.

loop:
btst #6,$bfe001
bne.s loop
rts

M
120 Beiträge seit 2009
vor 12 Jahren

Ich würde auch eher zu DotNetZip greifen.

Die Nutzungsbedingungen von SharpZipLib sind mir suspekt bzw. nicht so einfach/deutlich, zumal DotNetZip recht einfach zu verwenden ist und AFAIK alles unterstützt was man braucht.

Warum sich System.IO.Packaging allerdings nur auf ZIP-Dateien wie die von OpenXML beschränkt erschließt sich mir nicht, schließlich muss dahinter ja auch ein (unzugänglicher) ZIP-Support liegen

S
269 Beiträge seit 2010
vor 12 Jahren

Was man auch noch machen könnte, wäre, die Windows-Mittel zu verwenden.
Ich rede hier explizit von den Shell32-Methoden, auf welche man durch das Einbinden der Interop.Shell32.dll recht einfach nutzen kann.
Leider ist da nicht viel mit Dokumentation, also man müsste ein wenig im Internet rumsuchen, aber nach ein bisschen Hin und Her kann ich nun ohne Probleme Zip-Dateien zumindest schonmal entpacken.
Wer also auf "externe" (mehr oder minder, da Shell32 IMHO ja nun nicht wirklich zu den .NET-Boardmitteln gehört) Komponenten verzichten möchte, würde mit der Shell32 IMHO für die einfachen Aufgaben Alles haben, was er braucht.

so far
Karill

5.299 Beiträge seit 2008
vor 12 Jahren

Zustimm. Mitte WinApi ist zippen eiglich erträglich einfach, sodaß ich mir das Einbinden einer dll ersparen tu. Gugge (Un-)Zippen ohne Zusatz-Komponente
Nichtmal der Shell32-Verweis ist dafür nötig.

Der frühe Apfel fängt den Wurm.