Also hallo erst mal
ich möchte mit SharpZipLib ausgehend von einem bestimmten Verzeichnis alle Unterverzeichnisse mit den darin enthaltenen Dateien zippen. Dabei sollte in der Zip-Datei wieder die gleiche Verzeichnisstruktur vorherrschen. Folgender Code ist bereits geschrieben:
public static void Main(string[] args)
{
Console.WriteLine("Beginn: " + DateTime.Now.ToLongTimeString());
if ( args.Length < 2 ) {
Console.WriteLine("Usage: CreateZipFile Path ZipFile");
return;
}
if ( !Directory.Exists(args[0]) ) {
Console.WriteLine("Cannot find directory '{0}'", args[0]);
return;
}
try
{
string[] filenames = Directory.GetFiles(args[0], "*.*", SearchOption.AllDirectories);
using (ZipOutputStream s = new ZipOutputStream(File.Create(args[1]))) {
s.SetLevel(6);
byte[] buffer = new byte[4096];
foreach (string file in filenames) {
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using ( FileStream fs = File.OpenRead(file) ) {
int sourceBytes;
do {
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while ( sourceBytes > 0 );
}
}
s.Finish();
s.Close();
}
}
catch(Exception ex)
{
Console.WriteLine("Exception during processing {0}", ex);
}
Console.WriteLine("Ende: " + DateTime.Now.ToLongTimeString());
}
}
vor allem diese Zeile:
string[] filenames = Directory.GetFiles(args[0], "*.*", SearchOption.AllDirectories);
gibt mir ja alle Dateien zurück die ich brauche - aber eben nicht die dazugehörige Struktur.
Wer kann hier helfen????
Gruß
Vergaserbirndl
//edit: C# Code Tags ergänzt !!!
Hallo Vergaserbirndl,
Das Projekte-Forum ist zum Vorstellen eigener Projekte da.
==> Verschoben nach "Rund um die Programmierung"
Gruß,
Thomas
A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee
Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.
Wenn du die Struktur auch speichern willst, musst du rekursiv alle Unterverzeichnisse durchsuchen.
In der rekursiven Funktion legst du zuerst das aktuelle Verzeichnis im ZIP an, dann suchst du alle Dateien in diesem Verzeichnis und fügst diese hinzu. Anschliessend suchst du alle untergeordneten Verzeichnisse und rufst deine Funktion für jedes dieser Verzeichnisse wieder auf.