Format archiwum ZIP

W epoce cyfrowej, gdzie najważniejsze są dane i wydajność ich przechowywania, archiwa ZIP pozostają niezawodnym i wszechobecnym rozwiązaniem do kompresji i porządkowania plików.

Informacje o archiwum Zip

ZIP to format archiwum, w którym można przechowywać jeden lub kilka bezstratnie skompresowanych plików i folderów, z szyfrowaniem lub bez. ZIP to najpopularniejszy format znany od ponad trzydziestu lat i obsługiwany przez praktycznie każdy nowoczesny system operacyjny. Format ten rozszerzył się również na inne formaty, takie jak JAR i OpenDocument.

Informacje o historii formatu pliku archiwum zip

Pierwsza specyfikacja formatu ZIP została opublikowana w 1989 roku. Autorami idei ZIP byli Phil Katz i Gary Conway. Odniósł natychmiastowy sukces ze względu na skuteczność w zmniejszaniu rozmiaru plików, ułatwiając przechowywanie i przesyłanie plików za pośrednictwem wolnych połączeń internetowych i ograniczonej pojemności pamięci masowej w tamtych czasach. Od 1993 roku obsługuje najpopularniejszą metodę kompresji Deflate. Silne szyfrowanie AES zostało wprowadzone w 2003 roku. Mimo że jest dość stary, standard nie stał się kopalnym – jest aktywnie rozwijany w dzisiejszych czasach. Dlatego w 2020 roku został rozszerzony o metody kompresji Zstandard, MP3 i XZ.

Struktura Archiwum ZIP

Archiwa ZIP są zaprojektowane w oparciu o tę hierarchiczną strukturę, aby efektywnie przechowywać i organizować skompresowane pliki, jednocześnie umożliwiając łatwy dostęp do poszczególnych plików w archiwum. Każdy wpis w archiwum jest kompresowany oddzielnie, może nawet mieć własną metodę kompresji i szyfrowania. Wpis wewnątrz archiwum ma poprzedzający nagłówek z oryginalnymi metadanymi pliku. Spis treści znajduje się na końcu pliku. Takie podejście pozwala na utworzenie samorozpakowującego się archiwum (SFX), które pozostaje również prawidłowym archiwum ZIP, ponieważ część wykonywalna znajduje się na samym początku pliku SFX.

Metody kompresji zip

Nowoczesny ZIP umożliwia kompresję danych algorytmami Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard. Plik można również przechowywać bez kompresji. Najbardziej popularną opcją jest Deflate, która jest domyślną opcją w każdym narzędziu archiwizującym. Istnieją również algorytmy bezstratnej kompresji określonych plików: MP3, JPEG, WAV. Aspose.ZIP w pełni obsługuje metody Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd i Zstandard. Umożliwia ekstrakcję skompresowanego dźwięku WavPack.

Obsługiwane operacje w archiwum zip

Korzystając z Aspose.ZIP, możesz obsługiwać archiwum ZIP na różne sposoby. Możesz tworzyć archiwum, dodawać wpisy do istniejącego archiwum bez przepakowywania, usuwać wpisy z istniejącego archiwum bez wpływu na resztę archiwum oraz wyodrębniać dowolny wpis lub całe archiwum. Możesz szyfrować i odszyfrowywać każdy wpis osobno, korzystając ze starszego lub nowoczesnego algorytmu szyfrowania AES. Aspose.ZIP potrafi tworzyć samorozpakowujące się i wielotomowe archiwa ZIP.

Plik ZIP - Struktura wewnętrzna

Jak już powiedziano, katalog centralny, czyli spis treści, znajduje się na końcu archiwum ZIP. Katalog ten pełni rolę indeksu zawierającego listę wszystkich wpisów plików w archiwum wraz z ich pozycjami w archiwum. Nagłówki wpisów mogą zawierać czas utworzenia i modyfikacji, atrybuty systemu plików, nazwę pliku i komentarz. Nagłówek wpisu można rozszerzyć o niestandardowe dodatkowe pole do przechowywania niestandardowych metadanych. Możliwe jest dołączenie nagłówków Zip64 w celu obsługi ponad 65 535 wpisów w jednym archiwum. Maksymalny rozmiar archiwum ZIP z rozszerzeniem Zip64 wynosi 264−1 bajtów. Archiwum ZIP można podzielić na kilka plików. W takim przypadku centralny katalog przechowuje przesunięcia każdego woluminu w celu szybkiego dostępu do konkretnego wpisu.

Plik ZIP - Struktura wewnętrzna

Popularność archiwum Zip i wsparcie

ZIP to najpopularniejszy format archiwizacji. Archiwa ZIP są tak powszechnie rozpoznawane i obsługiwane, że różne aplikacje, w tym popularne menedżery plików, takie jak Eksplorator Windows, MacOS Finder i narzędzia typu open source, takie jak 7-Zip i WinRAR zapewniają natywną obsługę tworzenia i rozpakowywania plików ZIP. Wsparcie to obejmuje usługi przechowywania w chmurze, klientów poczty e-mail, a nawet urządzenia mobilne.

Przykłady użycia plików ZIP

Archiwa ZIP to wszechobecny format plików służący do kompresji i porządkowania danych, co czyni je niezbędnymi w różnych aplikacjach. Operacje na archiwach za pośrednictwem .NET umożliwiają programistom bezproblemową pracę z plikami Zip. W poniższych przykładach kodu zagłębimy się w możliwości operacji z archiwum Zip, pokazując, jak utworzyć nowe archiwum Zip i efektywnie wyodrębnić pliki z istniejące. Te przykłady pomogą Ci wykorzystać możliwości tej biblioteki do płynnego zarządzania archiwami Zip w projektach .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);
    }
}

Dodatkowe informacje o archiwach Zip

Ludzie pytali

1. Jaki jest najczęstszy powód kompresji archiwum zip?

Najczęstszym powodem kompresowania pliku Zip jest zmniejszenie rozmiaru pliku w celu wydajnego przechowywania, przesyłania i organizowania danych.

2. Dlaczego zip nazywa się archiwum?

Zip nazywany jest archiwum, ponieważ działa jak cyfrowy segregator, łącząc różne pliki i katalogi w jedną skompresowaną całość, podobnie jak archiwa fizyczne przechowują i organizują dokumenty. Ta funkcja archiwizacji upraszcza przechowywanie i przesyłanie danych, zmniejszając liczbę pojedynczych plików i całkowitą wymaganą przestrzeń dyskową.

3. Czy wirus może zainfekować zip?

Tak, wirusy mogą potencjalnie infekować pliki w archiwum Zip, jeśli same pliki są zainfekowane. Chociaż sam format Zip nie jest sam w sobie szkodliwy, może przechowywać i transportować zainfekowane pliki, tak jak każdy inny format pliku.