Ich bin in einer festen Position. Ich muss eine ZIP-Datei vom Netzwerkstandort herunterladen und dann auf dem lokalen Computer dekomprimieren und die Dateien verwenden. Die einzige Einschränkung ist, dass ich keine Drittanbieter-DLL verwenden kann.So extrahieren Sie Zip-Datei mit Dotnet Framework 4.0 ohne Verwendung von Drittanbieter-Dlls
Antwort
In .NET Framework 4.5 gibt es jetzt System.IO.Compression.ZipFile.ExtractToDirectory(String, String)
Methode.
System.IO.Compression;) – tanathos
OOps, schnelles Schreiben ... ich werde es korrigieren :) –
ich mag, wie die Frage, die speziell für eine 4.0-Lösung und eine 4,5 Antwort fragt – DontFretBrett
Eine schnelle Google-Suche ergab dies. GZipStream Class MSDN Reference
"... jedoch bietet diese Klasse nicht inhärent Funktionalität zum Hinzufügen oder Extrahieren von Dateien aus .zip Archiven ..." –
Es gibt keine „guten“ Weg, dies zu tun. Sie könnten den ZIP-Algorithmus natürlich selbst implementieren, indem Sie information für die ZIP-Dateistruktur und Klassen wie DeflateStream öffentlich zugänglich machen (obwohl auch dies nicht funktioniert, wenn es nicht mit dem DEFLATE-Algorithmus komprimiert wird). Es gibt einige Informationen über mögliche Alternativen in this blog post, aber die kurze Version ist, dass Sie entweder eine Bibliothek eines Drittanbieters verwenden oder eine selbst schreiben müssen.
Wenn dies eine Situation wäre, in der Sie den Quellcode auf GPL-Basis freigeben könnten, könnten Sie den Code aus einem Projekt wie SharpZipLib kopieren und in Ihre eigenen einfügen, wodurch die Anforderung zur Verwendung der DLL umgangen wird . Aber warum können Sie keine DLLs von Drittanbietern verwenden?
GZipStream wird am häufigsten für die WCF-Datenkomprimierung verwendet. Benutze das hier nicht.
können Sie diese ZIP-Bibliothek versuchen, in Dateien zu komprimieren:
Dies wird nicht angezeigt um eine WCF-Frage zu sein, und GZipStream wird nicht mit ZIP-Dateien helfen, die normalerweise den DEFLATE-Algorithmus verwenden. –
Sie haben meinen Beitrag nicht verstanden. Ich schlug einen anderen Ansatz vor ... – Turowicz
SharpZipLib schlägt mit Dateien fehl, die von einem Unix-Host-System komprimiert wurden.Zum Beispiel, wenn sie auf einem Mac OS X-Maschine gemacht, den internen zip Kompressor – Highmastdon
Ich bin nicht sicher, ob es in VS2010 noch vorhanden ist, aber in früheren Versionen J # wurde in VS und J # enthält die java.util.zip
enthalten Klasse in der vjslib.dll, und da es Teil von VS ist, ist es keine DLL von Drittanbietern, so dass Sie es möglicherweise auf diese Weise tun können.
Hier ist ein Codeproject Artikel zeigt, wie dies zu tun: Zip and Unzip from a C# program using J# runtime
Interessante mit, ich wusste nicht, es ist ... –
Beachten Sie, dass J # nicht mit .NET Framework mehr ausgeliefert, obwohl es immer noch mit VS2005- ausgeliefert 2015. Dies könnte für einige Leute immer noch eine gültige Lösung sein. https://social.msdn.microsoft.com/Forums/office/en-US/627b5ca3-fac7-461f-9e3a-824fd2a5eb32/problem-with-vjslibdll?forum=netfxbcl – ErikusMaximus
Der .NET-Framework selbst nicht (derzeit) hat offiziell die Unterstützung für ZIP-Dateien. Es gibt ein paar qualitativ hochwertige freie Bibliotheken von Drittanbietern, und die J # -Runtime unterstützt es, wie andere bemerkt haben.
Ich empfehle die Lösung von Drittanbietern, aber wenn Sie das absolut nicht tun können, gibt es einen anderen Trick: ZipPackage, die Teil von WPF ist. Es unterstützt ZIP-Dateien (erweitert mit zusätzlichen Metadaten) und funktioniert gut genug zum Lesen von meisten ZIP-Dateien.
Das sieht wie ein Duplikat dieser Frage aus: http://stackoverflow.com/questions/836736/unzip-files-programmatic-in-net. Sie können dort nach mehr Antworten suchen. – Rich
Warum können Sie keine Drittanbieterbibliothek verwenden? Das ist eine dumme Anforderung ... wahrscheinlich von jemandem im Management gemacht;) –
Es ist eigentlich eine sehr wichtige Anforderung, da das Fehlen von .NET Framework-Unterstützung für Reißverschlüsse die Komplexität des Hinzufügens einer weiteren DLL hinzufügt (und die Sicherheitsbedenken sind wahr, wenn Sie Betrachten Sie Microsofts Due Diligence mit ihrem Code, es ist viel besser als die meisten) –