| 

.NET C# Java Javascript Exception

1
Servus zusammen!

Ich möchte gerne ein komplettes Verzeichnis inkl. Unterordnern und Dateien in eine ZIP-Datei schreiben. Dabei muss auf jeden Fall die Struktur erhalten bleiben.
Das Ganze unter .NET und möglichst ohne Zusatzkomponenten (zumindest dürfen die nix kosten).

Ich suche schon länger danach finde aber bislang nix passendes entweder fehlen mir die Unterordner, Dateien oder die Beispiele sind nicht mehr kompilierbar.

Habt ihr ne Idee für mich?
News:
24.05.2011
daWastl 277 1 7
2 Antworten
1
SharpZipLib - Project-Page
SharpZipLib - Create a Zip with full control over contents
Compressing Files and Folders with SharpZipLib

Hier das Beispiel (hab die Kommentare und die meißten optionalen sachen entfernt):

using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;

// Compresses the files in the nominated folder, and creates a zip file on disk named as outPathname.
public void CreateSample(string outPathname, string password, string folderName) {

FileStream fsOut = File.Create(outPathname);
ZipOutputStream zipStream = new ZipOutputStream(fsOut);

zipStream.SetLevel(3); //0-9, 9 being the highest level of compression

foreach (string filename in Directory.GetFiles(folderName)) {
FileInfo fi = new FileInfo(filename);
string entryName = ZipEntry.CleanName(filename);
ZipEntry newEntry = new ZipEntry(entryName);

newEntry.DateTime = fi.LastWriteTime;
newEntry.Size = fi.Length;
zipStream.PutNextEntry(newEntry);

byte[ ] buffer = new byte[4096];
using (FileStream streamReader = File.OpenRead(filename)) {
StreamUtils.Copy(streamReader, zipStream, buffer);
}
zipStream.CloseEntry();
}
zipStream.IsStreamOwner = true;
zipStream.Close();
}


Die Geschwindigkeit ist gut, kann aber natürlich nicht mit der nativen zlib mithalten.
24.05.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
Danke für deine Antwort. Das Beispiel kenn ich bereits von der "Hersteller-Seite". Diese Version hat nur den Nachteil, dass sie nicht alle Unterordner berücksichtigt, sondern nur das Haupt-VZ und nicht die unterordner... :(
daWastl 24.05.2011
Du musste mit "new ZipEntry(relativePath);" die Unterverzeichnisse anlegen und den Dateien-Namen den relativen Pfad vorranstellen. Hab nen guten Artikel gefunden den ich gleich poste.
Floyd 24.05.2011
0
Kannst dir mal die DotNetZipLibrary auf Codeplex anschauen.
Dort ist auch ein Beispiel um eine Verzeichnis zu zippen:
Create a zip containing all the files in a folder
24.05.2011
PinBack 687 1 8
PinBack 687 1 8

Stelle deine .net-Frage jetzt!