ZIP-arkivformat

I den digitala tidsåldern, där data är kung och lagringseffektivitet av största vikt, har ZIP-arkiv förblivit en stabil och allestädes närvarande lösning för att komprimera och organisera filer.

Om Zip Archive Information

ZIP är ett arkivformat som kan innehålla en eller flera förlustfria komprimerade filer och mappar, med eller utan kryptering. ZIP är det mest populära formatet känt i mer än trettio år och stöds av praktiskt taget alla moderna operativsystem. Det här formatet utökades även till vissa andra format som JAR och OpenDocument.

Zip-arkiv Filformat History Info

Den första formatspecifikationen för ZIP publicerades 1989. Författarna till ZIP idé var Phil Katz och Gary Conway. Det blev en omedelbar framgång på grund av dess effektivitet i att minska filstorlekarna, vilket gör det lättare att lagra och överföra filer över långsamma internetanslutningar och begränsade lagringskapaciteter från den eran. Sedan 1993 stöder den den vanligaste Deflate-kompressionsmetoden. Stark AES-kryptering introducerades 2003. Trots att standarden är ganska gammal har den inte blivit fossil - utvecklas aktivt i nuförtiden. Så 2020 utökades den med Zstandard, MP3 och XZ komprimeringsmetoder.

ZIP-arkivets struktur

ZIP-arkiv är utformade i denna hierarkiska struktur för att effektivt lagra och organisera komprimerade filer samtidigt som det möjliggör enkel åtkomst till enskilda filer i arkivet. Varje post i arkivet komprimeras separat, kan vara till och med med sin egen komprimerings- och krypteringsmetod. Posten i arkivet har föregående rubrik med originalfilens metadata. Innehållsförteckningen finns i slutet av filen. Ett sådant tillvägagångssätt tillåter att komponera självextraherande (SFX) arkiv, som också förblir ett giltigt ZIP-arkiv på grund av att den körbara delen finns i början av SFX-filen.

Zip-komprimeringsmetoder

Modern ZIP tillåter komprimering av data med Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandardalgoritmer. Filen kan också lagras utan komprimering. Det vanligaste är Deflate, som är standard i alla arkiveringsverktyg. Det finns också algoritmer för förlustfri komprimering av specifika filer: MP3, JPEG, WAV. Aspose.ZIP har fullt stöd för metoderna Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd och Zstandard. Det tillåter extraktion av WavPack-komprimerat ljud.

Zip Archive Supported Operations

Med Aspose.ZIP kan du hantera ZIP-arkiv på olika sätt. Du kan skapa arkiv, lägga till poster i befintligt arkiv utan att packa om, ta bort poster från befintligt arkiv utan att påverka resten av arkivet och extrahera godtyckliga poster eller hela arkivet. Du kan kryptera och dekryptera varje post separat med antingen äldre eller modern AES-krypteringsalgoritm. Aspose.ZIP kan skapa självextraherande ZIP-arkiv med flera volymer.

Zip-fil - intern struktur

Som sagt, den centrala katalogen, som är innehållsförteckningen, ligger mot slutet av ZIP-arkivet. Denna katalog fungerar som ett index och listar alla filposter i arkivet tillsammans med deras positioner i arkivet. Postrubriker kan inkludera tider för skapande och ändring, filsystemattribut, filnamn och kommentar. Inmatningsrubriken kan utökas med anpassat extra fält för att lagra anpassad metadata. Det är möjligt att inkludera Zip64-huvuden för att stödja mer än 65 535 poster per arkiv. Den maximala storleken på ZIP-arkiv med Zip64-tillägg är 264−1 byte. ZIP-arkivet kan delas upp i flera filer. I sådana fall lagrar den centrala katalogen offset för varje volym för snabb åtkomst till en viss post.

Zip-fil - intern struktur

Zip-arkivets popularitet och support

ZIP är arkivformatet nummer ett. ZIP-arkiv är så allmänt erkända och stöds att olika programvaruapplikationer, inklusive populära filhanterare som Windows Explorer, macOS Finder och öppen källkodsverktyg som 7-Zip och WinRAR , ger inbyggt stöd för skapa och extrahera ZIP-filer. Detta stöd sträcker sig till molnlagringstjänster, e-postklienter och till och med mobila enheter.

Exempel på användning av zip-filer

Zip-arkiv är ett allestädes närvarande filformat för att komprimera och organisera data, vilket gör dem viktiga i olika programvaruapplikationer. Operationer med arkiv via .NET ger utvecklare möjlighet att arbeta med Zip-filer utan ansträngning. I följande kodexempel kommer vi att fördjupa oss i funktionerna för operationer med Zip-arkiv, och demonstrera hur man skapar nya Zip -arkiv och effektivt extraherar filer från befintliga. Dessa exempel hjälper dig att utnyttja det här bibliotekets möjligheter för att hantera Zip-arkiv sömlöst i dina .NET-projekt

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

Ytterligare information om Zip-arkiv

Folk har frågat

1. Vilken krypteringsmetod ska jag välja?

ZIP-formatet stöder traditionella (ZipCrypto) och moderna AES-krypteringstekniker. Den förra är mycket svagare än den senare och lätt brytbar; ZipCrypto stöds av Aspose.ZIP för äldre. Använd endast AES256-kryptering när du skapar ett arkiv.

2. Finns det något sätt att dra fördel av flerkärniga processorer för komprimering?

Aspose.ZIP låter dig komponera poster av ZIP-arkiv av olika CPU-kärnor. Detta kan avsevärt minska den totala kompressionstiden. Se en artikel med förklaring och användningsexempel.

3. Kan virus infektera zip?

Ja, virus kan potentiellt infektera filer i ett Zip-arkiv om själva filerna är infekterade. Även om själva Zip-formatet inte är skadligt i sig, kan det lagra och transportera infekterade filer, precis som alla andra filformat.