ZIP-Archivformat

Im digitalen Zeitalter, in dem Daten an erster Stelle stehen und Speichereffizienz an erster Stelle steht, sind ZIP-Archive nach wie vor eine zuverlässige und allgegenwärtige Lösung zum Komprimieren und Organisieren von Dateien.

Informationen zu Zip-Archivinformationen

ZIP ist ein Archivformat, das eine oder mehrere verlustfrei komprimierte Dateien und Ordner mit oder ohne Verschlüsselung speichern kann. ZIP ist das beliebteste Format, das seit mehr als dreißig Jahren bekannt ist und von praktisch jedem modernen Betriebssystem unterstützt wird. Dieses Format wurde auch auf einige andere Formate wie JAR und OpenDocument erweitert.

Informationen zum Verlauf des Zip-Archiv-Dateiformats

Die erste Formatspezifikation von ZIP wurde 1989 veröffentlicht. Die Autoren der ZIP-Idee waren Phil Katz und Gary Conway. Es war ein sofortiger Erfolg, da es die Dateigröße effizient reduzierte und die Speicherung und Übertragung von Dateien über langsame Internetverbindungen und begrenzte Speicherkapazitäten der damaligen Zeit erleichterte. Seit 1993 unterstützt es die gängigste Deflate-Komprimierungsmethode. Die starke AES-Verschlüsselung wurde 2003 eingeführt. Obwohl der Standard schon recht alt ist, ist er nicht veraltet, sondern wird heutzutage aktiv weiterentwickelt. Daher wurde es im Jahr 2020 um die Komprimierungsmethoden Zstandard, MP3 und XZ erweitert.

Struktur des ZIP-Archivs

ZIP-Archive sind in dieser hierarchischen Struktur konzipiert, um komprimierte Dateien effizient zu speichern und zu organisieren und gleichzeitig einen einfachen Zugriff auf einzelne Dateien im Archiv zu ermöglichen. Jeder Archiveintrag wird separat komprimiert, möglicherweise sogar mit einer eigenen Komprimierungs- und Verschlüsselungsmethode. Der Eintrag im Archiv hat einen vorangehenden Header mit Originaldateimetadaten. Das Inhaltsverzeichnis befindet sich am Ende der Datei. Ein solcher Ansatz ermöglicht die Erstellung eines selbstextrahierenden (SFX)-Archivs, das auch ein gültiges ZIP-Archiv bleibt, da sich der ausführbare Teil ganz am Anfang der SFX-Datei befindet.

Zip-Komprimierungsmethoden

Modernes ZIP ermöglicht die Komprimierung von Daten mit den Algorithmen Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd und Zstandard. Die Datei kann auch ohne Komprimierung gespeichert werden. Am gebräuchlichsten ist Deflate, das in jedem Archivierungstool standardmäßig vorhanden ist. Es gibt auch Algorithmen zur verlustfreien Komprimierung bestimmter Dateien: MP3, JPEG, WAV. Aspose.ZIP unterstützt die Methoden Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd und Zstandard vollständig. Es ermöglicht die Extraktion von WavPack-komprimiertem Audio.

Von der Zip-Archivierung unterstützte Vorgänge

Mit Aspose.ZIP können Sie ZIP-Archive auf verschiedene Arten verwalten. Sie können ein Archiv erstellen, Einträge zu einem vorhandenen Archiv hinzufügen, ohne es neu zu packen, Einträge aus einem vorhandenen Archiv löschen, ohne den Rest des Archivs zu beeinträchtigen, und beliebige Einträge oder das gesamte Archiv extrahieren. Sie können jeden Eintrag einzeln mit dem alten oder modernen AES-Verschlüsselungsalgorithmus verschlüsseln und entschlüsseln. Aspose.ZIP ist in der Lage, selbstextrahierende ZIP-Archive mit mehreren Volumes zu erstellen.

Zip-Datei – Interne Struktur

Wie bereits erwähnt, befindet sich das zentrale Verzeichnis, das Inhaltsverzeichnis, am Ende des ZIP-Archivs. Dieses Verzeichnis fungiert als Index und listet alle Dateieinträge im Archiv zusammen mit ihren Positionen innerhalb des Archivs auf. Eintragsheader können Erstellungs- und Änderungszeiten, Dateisystemattribute, Dateinamen und Kommentare enthalten. Der Eintragsheader kann um ein benutzerdefiniertes Zusatzfeld erweitert werden, um benutzerdefinierte Metadaten zu speichern. Es ist möglich, Zip64-Header einzubinden, um mehr als 65.535 Einträge pro Archiv zu unterstützen. Die maximale Größe eines ZIP-Archivs mit Zip64-Erweiterung beträgt 264−1 Byte. Das ZIP-Archiv kann in mehrere Dateien aufgeteilt werden. In einem solchen Fall speichert das zentrale Verzeichnis die Offsets jedes Volumes für den schnellen Zugriff auf bestimmte Einträge.

Zip-Datei – Interne Struktur

Beliebtheit des Zip-Archivs und Support

ZIP ist das Archivformat Nummer eins. ZIP-Archive werden so weithin anerkannt und unterstützt, dass verschiedene Softwareanwendungen, darunter beliebte Dateimanager wie Windows Explorer, macOS Finder und Open-Source-Tools wie 7-Zip und WinRAR , native Unterstützung dafür bieten Erstellen und Extrahieren von ZIP-Dateien. Diese Unterstützung erstreckt sich auf Cloud-Speicherdienste, E-Mail-Clients und sogar mobile Geräte.

Beispiele für die Verwendung von Zip-Dateien

Zip-Archive sind ein allgegenwärtiges Dateiformat zum Komprimieren und Organisieren von Daten und daher in verschiedenen Softwareanwendungen unverzichtbar. Durch den Betrieb mit Archiven über .NET können Entwickler mühelos mit Zip-Dateien arbeiten. In den folgenden Codebeispielen befassen wir uns mit den Möglichkeiten von Vorgängen mit Zip-Archiven und demonstrieren, wie man neue Zip-Archive erstellt und Dateien daraus effizient extrahiert bestehende. Mithilfe dieser Beispiele können Sie die Funktionen dieser Bibliothek nutzen, um Zip-Archive nahtlos in Ihren .NET-Projekten zu verwalten

Create Zip file via .NET

Compose ZIP archive with two entries added by their paths.:

using (var archive = new Archive())
{
    archive.CreateEntry("entry_name1.dat", "input_file1.dat");
    archive.CreateEntry("entry_name2.dat", "input_file2.dat");
    archive.Save("result_archive.zip");
}

How to UnZIP files in C#

Steps: Unzip File to Folder in C#

  • Create an instance of Archive class based on your zip file.
  • Unzip the zip file using Archive.ExtractToDirectory method to your folder.
using (var archive = new Archive("input_archive.zip"))
{
    archive.ExtractToDirectory("outputDirectory");
}

Compressing Single File ZIP File

Steps: Compressing Single File in C#

  • Create a file stream with the desired name of your output zip file.
  • Create file stream of the data file to be compressed and encrypted.
  • Create an instance of Archive class and pass to it an instance of ArchiveEntrySettings class with AesEcryptionSettings instance, specifying the password.
  • Add data file created in step 2 using Archive.CreateEntry method.
  • Compress and encrypt the data file using Archive.Save method and pass it the file stream created in step 1.
using (var zipFile = File.Open("EncrypedWithAES256.zip", FileMode.Create))
{
    using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
     {
           using (var archive = new Archive(new ArchiveEntrySettings(null, new  AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
           {
                  archive.CreateEntry("alice29.txt", source);
                  archive.Save(zipFile);
           }
      }
}

Deleting entries from existing archive

You do not have to repack whole archive when you only need to remove one entry from it. Steps:

  • Create a file stream with the desired name of your output zip file.
  • Create an instance of Archive class based on your zip file.
  • Delete the first file - the entry with zero index – from the archive.
  • Save the archive without excluded entry to output stream from step 1
using (FileStream outputZipFile = File.Open(withoutAnEntry.zip, FileMode.Create))
{
    using (Archive archive = new Archive(archive.zip))
    {
        archive.DeleteEntry(archive.Entries[0]);
        archive.Save(outputZipFile);
    }
}

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Zusätzliche Informationen zu Zip-Archiven

Die Leute haben gefragt

1. Welche Verschlüsselungsmethode soll ich wählen?

Das ZIP-Format unterstützt traditionelle (ZipCrypto) und moderne AES-Verschlüsselungstechniken. Ersteres ist viel schwächer als Letzteres und leicht zerbrechlich; ZipCrypto wird von Aspose.ZIP für ältere Versionen unterstützt. Bitte verwenden Sie beim Erstellen eines Archivs ausschließlich die AES256-Verschlüsselung.

2. Gibt es eine Möglichkeit, Multi-Core-Prozessoren für die Komprimierung zu nutzen?

Mit Aspose.ZIP können Sie Einträge des ZIP-Archivs nach verschiedenen CPU-Kernen zusammenstellen. Dadurch kann die Gesamtkomprimierungszeit erheblich verkürzt werden. Siehe einen Artikel mit Erklärung und Verwendungsbeispiel.

3. Kann ein Virus Zip infizieren?

Ja, Viren können möglicherweise Dateien in einem Zip-Archiv infizieren, wenn die Dateien selbst infiziert sind. Obwohl das Zip-Format selbst nicht grundsätzlich schädlich ist, kann es wie jedes andere Dateiformat infizierte Dateien speichern und transportieren.