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 osobno, 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. Najpopularniejszym jest Deflate, które jest ustawieniem domyślnym 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
Używając 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.
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ę tworzenie i rozpakowywanie 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ących. 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. Którą metodę szyfrowania wybrać?
Format ZIP obsługuje tradycyjne (ZipCrypto) i nowoczesne techniki szyfrowania AES. Ten pierwszy jest znacznie słabszy od drugiego i łatwo ulega zniszczeniu; ZipCrypto jest obsługiwane przez Aspose.ZIP dla starszych wersji. Podczas tworzenia archiwum używaj wyłącznie szyfrowania AES256.
2. Czy istnieje sposób wykorzystania procesorów wielordzeniowych do kompresji?
Aspose.ZIP umożliwia komponowanie wpisów archiwum ZIP według różnych rdzeni procesora. Może to znacznie skrócić całkowity czas kompresji. Zobacz artykuł z wyjaśnieniem i przykładem użycia.
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.