Formato archivio ZIP
Nell’era digitale, dove i dati regnano sovrani e l’efficienza di archiviazione è fondamentale, gli archivi ZIP sono rimasti una soluzione costante e onnipresente per la compressione e l’organizzazione dei file.
Informazioni sull'archivio zip
ZIP è un formato di archivio che può contenere uno o più file e cartelle compressi senza perdita di dati, con o senza crittografia. ZIP è il formato più popolare conosciuto da più di trent’anni e supportato praticamente da tutti i sistemi operativi moderni. Questo formato si estende anche ad altri formati come JAR e OpenDocument.
Informazioni sulla cronologia del formato file dell'archivio zip
La prima specifica del formato ZIP è stata pubblicata nel 1989. Gli autori dell’idea ZIP erano Phil Katz e Gary Conway. Fu un successo immediato grazie alla sua efficienza nel ridurre le dimensioni dei file, rendendo più semplice l’archiviazione e la trasmissione di file su connessioni Internet lente e capacità di archiviazione limitate di quell’epoca. Dal 1993 supporta il metodo di compressione Deflate più comune. La forte crittografia AES è stata introdotta nel 2003. Nonostante sia piuttosto vecchio, lo standard non è diventato fossile - viene sviluppato attivamente al giorno d’oggi. Quindi nel 2020 è stato ampliato con i metodi di compressione Zstandard, MP3 e XZ.
Struttura dell'archivio ZIP
Gli archivi ZIP sono progettati con questa struttura gerarchica per archiviare e organizzare in modo efficiente i file compressi consentendo al contempo un facile accesso ai singoli file all’interno dell’archivio. Ogni voce dell’archivio viene compressa separatamente, può anche avere il proprio metodo di compressione e crittografia. La voce all’interno dell’archivio ha un’intestazione precedente con i metadati del file originale. Il sommario si trova alla fine del file. Tale approccio consente di comporre un archivio autoestraente (SFX), che rimane anche un archivio ZIP valido poiché la parte eseguibile risiede all’inizio del file SFX.
Metodi di compressione zip
Il moderno ZIP consente di comprimere i dati con gli algoritmi Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard. Il file può anche essere archiviato senza compressione. Il più comune è Deflate, che è predefinito in qualsiasi strumento di archiviazione. Esistono anche algoritmi per la compressione senza perdita di file specifici: MP3, JPEG, WAV. Aspose.ZIP supporta pienamente i metodi Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd e Zstandard. Permette l’estrazione dell’audio compresso WavPack.
Operazioni supportate dall'archivio zip
Utilizzando Aspose.ZIP, puoi gestire l’archivio ZIP in vari modi. È possibile comporre un archivio, aggiungere voci all’archivio esistente senza reimballarlo, eliminare voci dall’archivio esistente senza influenzare il resto dell’archivio ed estrarre voci arbitrarie o l’intero archivio. Puoi crittografare e decrittografare ciascuna voce separatamente con l’algoritmo di crittografia AES legacy o moderno. Aspose.ZIP è in grado di creare archivi ZIP autoestraenti e multivolume.
File zip - Struttura interna
Come detto, la directory centrale, ovvero il sommario, si trova verso la fine dell’archivio ZIP. Questa directory funge da indice, elencando tutte le voci dei file nell’archivio insieme alle loro posizioni all’interno dell’archivio. Le intestazioni delle voci possono includere orari di creazione e modifica, attributi del file system, nome file e commenti. L’intestazione della voce può essere espansa con un campo aggiuntivo personalizzato per memorizzare metadati personalizzati. È possibile includere intestazioni Zip64 per supportare più di 65.535 voci per archivio. La dimensione massima dell’archivio ZIP con estensione Zip64 è 264−1 byte. L’archivio ZIP può essere suddiviso in più file. In tal caso la directory centrale memorizza gli offset di ciascun volume per un rapido accesso a una voce particolare.
Popolarità dell'archivio Zip e supporto
ZIP è il formato di archivio numero uno. Gli archivi ZIP sono così ampiamente riconosciuti e supportati che varie applicazioni software, inclusi i più diffusi file manager come Windows Explorer, macOS Finder e strumenti open source come 7-Zip e WinRAR , forniscono supporto nativo per creazione ed estrazione di file ZIP. Questo supporto si estende ai servizi di archiviazione cloud, ai client di posta elettronica e persino ai dispositivi mobili.
Esempi di utilizzo di file zip
Gli archivi zip sono un formato di file onnipresente per la compressione e l’organizzazione dei dati, rendendoli essenziali in varie applicazioni software. Le operazioni con archivi tramite .NET consentono agli sviluppatori di lavorare con file Zip senza sforzo. Nei seguenti esempi di codice, approfondiremo le funzionalità delle operazioni con l’archivio Zip, dimostrando come creare nuovi archivi Zip ed estrarre in modo efficiente i file da quelli esistenti. Questi esempi ti aiuteranno a sfruttare le funzionalità di questa libreria per gestire facilmente gli archivi Zip nei tuoi progetti .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);
}
}
Ulteriori informazioni sugli archivi Zip
La gente se lo è chiesto
1. Quale metodo di crittografia dovrei scegliere?
Il formato ZIP supporta le tecniche di crittografia AES tradizionali (ZipCrypto) e moderne. Il primo è molto più debole del secondo e facilmente fragile; ZipCrypto è supportato da Aspose.ZIP per legacy. Utilizza solo la crittografia AES256 quando componi un archivio.
2. C’è un modo per sfruttare i processori multi-core per la compressione?
Aspose.ZIP consente di comporre voci di archivio ZIP da diversi core della CPU. Ciò può ridurre significativamente il tempo di compressione totale. Vedi un articolo con spiegazione ed esempio di utilizzo.
3. Il virus può infettare zip?
Sì, i virus possono potenzialmente infettare i file all’interno di un archivio Zip se i file stessi sono infetti. Sebbene il formato Zip in sé non sia intrinsecamente dannoso, può archiviare e trasportare file infetti, proprio come qualsiasi altro formato di file.