Laden...

SharpZipLib - und komplette Verzeichnisstruktur zippen

Erstellt von Vergaserbirndl vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.055 Views
V
Vergaserbirndl Themenstarter:in
1 Beiträge seit 2007
vor 17 Jahren
SharpZipLib - und komplette Verzeichnisstruktur zippen

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 !!!

1.271 Beiträge seit 2005
vor 17 Jahren

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.

B
1.529 Beiträge seit 2006
vor 17 Jahren

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.

N
750 Beiträge seit 2004
vor 17 Jahren

Hallo Vergaserbirndl,

ich habe in deinem Post die Code-Tags ergänzt !!!

nils

?( wer suchet, der findet auch! :]