Formát archivu ZIP

V digitálním věku, kde jsou data králem a prvořadá je efektivita úložiště, zůstaly archivy ZIP stálým a všudypřítomným řešením pro kompresi a organizaci souborů.

Informace o archivu ZIP

ZIP je archivní formát, který pojme jeden nebo několik bezztrátově komprimovaných souborů a složek, se šifrováním nebo bez něj. ZIP je nejpopulárnější formát známý již více než třicet let a je podporován prakticky každým moderním operačním systémem. Tento formát se také rozšířil na některé další formáty, jako je JAR a OpenDocument.

Informace o historii formátu souboru archivu ZIP

První specifikace formátu ZIP byla zveřejněna v roce 1989. Autory nápadu ZIP byli Phil Katz a Gary Conway. Byl okamžitým úspěchem díky své efektivitě při zmenšování velikosti souborů, což usnadňovalo ukládání a přenos souborů přes pomalá internetová připojení a omezenou kapacitu úložiště té doby. Od roku 1993 podporuje nejběžnější metodu komprese Deflate. Silné šifrování AES bylo zavedeno v roce 2003. Navzdory tomu, že je tento standard poměrně starý, nestal se fosilním – v současnosti se aktivně vyvíjí. V roce 2020 byl tedy rozšířen o metody komprese Zstandard, MP3 a XZ.

Struktura ZIP archivu

Archivy ZIP jsou navrženy v této hierarchické struktuře tak, aby efektivně ukládaly a organizovaly komprimované soubory a zároveň umožňovaly snadný přístup k jednotlivým souborům v archivu. Každý záznam archivu je komprimován samostatně, může být i s vlastní metodou komprese a šifrování. Záznam v archivu má předchozí záhlaví s původními metadaty souboru. Obsah je umístěn na konci souboru. Takový přístup umožňuje skládat samorozbalovací (SFX) archiv, který zároveň zůstává platným ZIP archivem, protože spustitelná část je umístěna na samém začátku SFX souboru.

Metody komprese zipu

Moderní ZIP umožňuje kompresi dat pomocí algoritmů Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard. Soubor lze také uložit bez komprese. Nejběžnější je Deflate, což je výchozí nastavení v jakémkoli archivačním nástroji. Existují také algoritmy pro bezeztrátovou kompresi konkrétních souborů: MP3, JPEG, WAV. Aspose.ZIP plně podporuje metody Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd a Zstandard. Umožňuje extrakci komprimovaného zvuku WavPack.

Operace podporované archivem ZIP

Pomocí Aspose.ZIP můžete archivovat ZIP různými způsoby. Můžete sestavit archiv, přidat položky do existujícího archivu bez přebalování, odstranit položky z existujícího archivu bez ovlivnění zbytku archivu a extrahovat libovolnou položku nebo celý archiv. Každý záznam můžete zašifrovat a dešifrovat samostatně pomocí staršího nebo moderního šifrovacího algoritmu AES. Aspose.ZIP je schopen vytvářet samorozbalovací a vícesvazkové archivy ZIP.

Zip-file - Vnitřní struktura

Jak již bylo řečeno, centrální adresář, což je obsah, se nachází na konci archivu ZIP. Tento adresář funguje jako index, který uvádí všechny položky souboru v archivu spolu s jejich pozicemi v archivu. Záhlaví položek může obsahovat časy vytvoření a úpravy, atributy systému souborů, název souboru a komentář. Záhlaví položky lze rozšířit o vlastní dodatečné pole pro uložení vlastních metadat. Je možné zahrnout záhlaví Zip64 pro podporu více než 65 535 záznamů na archiv. Maximální velikost ZIP archivu s příponou Zip64 je 264−1 bajtů. ZIP archiv lze rozdělit do několika souborů. V takovém případě jsou v centrálním adresáři uloženy offsety každého svazku pro rychlý přístup ke konkrétní položce.

Zip-file - Vnitřní struktura

Popularita archivu zip a podpora

ZIP je formát archivu číslo jedna. Archivy ZIP jsou tak široce uznávány a podporovány, že různé softwarové aplikace, včetně oblíbených správců souborů, jako je Průzkumník Windows, macOS Finder, a nástroje s otevřeným zdrojovým kódem, jako je 7-Zip a WinRAR , poskytují nativní podporu pro vytváření a extrahování souborů ZIP. Tato podpora se vztahuje na služby cloudového úložiště, e-mailové klienty a dokonce i na mobilní zařízení.

Příklady použití souborů Zip

Archivy ZIP jsou všudypřítomným formátem souborů pro kompresi a organizaci dat, díky čemuž jsou nezbytné v různých softwarových aplikacích. Operace s archivy prostřednictvím .NET umožňuje vývojářům bez námahy pracovat se soubory Zip. V následujících příkladech kódu se ponoříme do možností operací s archivem Zip a předvedeme, jak vytvářet nové archivy Zip a efektivně extrahovat soubory z stávajících. Tyto příklady vám pomohou využít možnosti této knihovny k bezproblémové správě archivů Zip ve vašich projektech .NET

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);
    }
}

Další informace o Zip-archivech

Lidé se ptali

1. Jaký je nejčastější důvod komprimace archivu zip?

Nejčastějším důvodem pro komprimaci archivu Zip je zmenšení velikosti souboru pro efektivní ukládání, přenos a organizaci dat.

2. Proč se zip nazývá archiv?

Zip je označován jako „archiv“, protože funguje jako digitální pořadač, který spojuje různé soubory a adresáře do jediné komprimované entity, podobně jako fyzické archivy ukládají a organizují dokumenty. Tato archivační funkce zjednodušuje ukládání a přenos dat snížením počtu jednotlivých souborů a celkového požadovaného úložného prostoru.

3. Může virus infikovat zip?

Ano, viry mohou potenciálně infikovat soubory v archivu ZIP, pokud jsou infikovány samotné soubory. I když formát Zip sám o sobě není škodlivý, může ukládat a přenášet infikované soubory, stejně jako jakýkoli jiný formát souborů.