2012-05-17 2 views
9
gepackt werden

Ich habe einen Ordner "D:\folder" und in diesem Ordner habe ich 10 Dateien, die ich in ein neues Archiv "D:\folder.zip" zippen muss.Wie alle Dateien im Ordner

Derzeit verwende ich ICSharpCode.SharpZipLib, aber dies ist keine zwingende Voraussetzung, so dass andere Lösungen akzeptabel sind.

Das Problem, mit dem ich konfrontiert bin, ist, dass, wenn ich versuche, die Methode FileStream fs = File.OpenRead(@"D:\folder") auszuführen, bekomme ich einen Fehler wegen des Zugriffs auf den angegebenen Pfad.

Wie kann ich diese Dateien auf einfache Weise komprimieren?

+0

Eine schnelle Google-Suche: http://www.codeproject.com/Articles/37887/C-Zip-Files-and-or-Folders - Vielleicht könnte es Ihnen helfen. –

+0

Siehe [wie man alle Dateien innerhalb eines bestimmten Ordners liest] (http://stackoverflow.com/questions/5840443/how-to-read-all-files-inside-particular-folder). –

+3

mögliches Duplikat von [Zip-Ordner in C#] (http://stackoverflow.com/questions/905654/zip-folder-in-c-sharp) –

Antwort

20

DotNetZip ist viel einfacher zu bedienen als SharpZipLib, Beispiel für alle Dateien im Ordner zippen:

using (ZipFile zip = new ZipFile()) 
    { 
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX"); 
    zip.Save(zipFileToCreate); 
    } 

Dies ist ein ein Beispiel aus dieser Seite:

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

+0

Ja, das ist eine viel einfachere Bibliothek als SharpLib, +1 –

+0

Vielen Dank! kannst du mir sagen, welche Assembly diese ZipFile benötigt. Ionic.Zip - soweit ich das verstehe. richtig? –

+0

Assembly ist Ionic.Zip.dll –

13

ich auch zustimmen der Vorschlag von Antonio Bakula, DotNetZip anstelle von SharpZipLib zu verwenden.

.NET 4.5 enthält die neuen Klassen ZipArchive und ZipFile zum Bearbeiten von ZIP-Dateien. Mit dieser Unterstützung, was Sie zu tun versuchen, indem erreicht wird:

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip"); 

Als Randnotiz ist der Grund, warum Sie den Fehler erhalten, weil Sie ein Verzeichnis anstelle einer Datei zu öffnen versuchen. Die File.OpenRead wird verwendet, um eine Datei zum Lesen zu öffnen, da Sie ein Verzeichnis bereitstellen, erhalten Sie den Fehler. Wenn Sie die Dateien oder Verzeichnisse in einem bestimmten Ordner aufzählen möchten, können Sie stattdessen Directory.EnumerateFiles oder Directory.EnumerateDirectories verwenden.