ZIP-archiefformaat
In het digitale tijdperk, waarin data centraal staat en opslagefficiëntie voorop staat, zijn ZIP-archieven een standvastige en alomtegenwoordige oplossing gebleven voor het comprimeren en organiseren van bestanden.
Over Zip-archiefinformatie
ZIP is een archiefformaat dat een of meerdere verliesvrij gecomprimeerde bestanden en mappen kan bevatten, met of zonder codering. ZIP is het populairste formaat dat al meer dan dertig jaar bekend is en wordt ondersteund op vrijwel elk modern besturingssysteem. Dit formaat werd ook uitgebreid naar enkele andere formaten zoals JAR en OpenDocument.
Zip-archief Bestandsformaat Geschiedenis Info
De eerste formaatspecificatie van ZIP werd gepubliceerd in 1989. De auteurs van het ZIP-idee waren Phil Katz en Gary Conway. Het was meteen een succes vanwege de efficiëntie bij het verkleinen van de bestandsgrootte, waardoor het gemakkelijker werd om bestanden op te slaan en te verzenden via trage internetverbindingen en de beperkte opslagcapaciteit van die tijd. Sinds 1993 ondersteunt het de meest gebruikelijke Deflate-compressiemethode. Sterke AES-encryptie werd in 2003 geïntroduceerd. Ondanks dat hij vrij oud is, is de standaard niet fossiel geworden - er wordt tegenwoordig actief aan ontwikkeld. Daarom werd het in 2020 uitgebreid met de compressiemethoden Zstandaard, MP3 en XZ.
Structuur van ZIP-archief
ZIP-archieven zijn ontworpen in deze hiërarchische structuur om gecomprimeerde bestanden efficiënt op te slaan en te ordenen en tegelijkertijd gemakkelijke toegang tot individuele bestanden binnen het archief mogelijk te maken. Elk archiefitem wordt afzonderlijk gecomprimeerd, mogelijk zelfs met een eigen compressie- en encryptiemethode. De vermelding in het archief heeft een voorafgaande header met originele bestandsmetagegevens. De inhoudsopgave bevindt zich aan het einde van het bestand. Een dergelijke aanpak maakt het samenstellen van een zelfuitpakkend (SFX) archief mogelijk, dat ook een geldig ZIP-archief blijft omdat het uitvoerbare deel zich helemaal aan het begin van het SFX-bestand bevindt.
Zip-compressiemethoden
Moderne ZIP maakt het comprimeren van gegevens mogelijk met Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard-algoritmen. Bestand kan ook zonder compressie worden opgeslagen. De meest voorkomende is Deflate, wat standaard is in elk archiveringshulpmiddel. Er zijn ook algoritmen voor verliesloze compressie van specifieke bestanden: MP3, JPEG, WAV. Aspose.ZIP ondersteunt Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd en Zstandard-methoden volledig. Het maakt extractie van gecomprimeerde WavPack-audio mogelijk.
Zip-archief ondersteunde bewerkingen
Met Aspose.ZIP kunt u op verschillende manieren met ZIP-archieven omgaan. U kunt een archief samenstellen, items toevoegen aan een bestaand archief zonder opnieuw in te pakken, items uit een bestaand archief verwijderen zonder de rest van het archief te beïnvloeden, en willekeurige items of het hele archief extraheren. U kunt elk item afzonderlijk coderen en decoderen met een verouderd of modern AES-coderingsalgoritme. Aspose.ZIP kan zelfuitpakkende ZIP-archieven met meerdere volumes maken.
Zip-bestand - Interne structuur
Zoals gezegd bevindt de centrale map, de inhoudsopgave, zich aan het einde van het ZIP-archief. Deze map fungeert als index en vermeldt alle bestandsitems in het archief, samen met hun posities in het archief. Invoerkoppen kunnen aanmaak- en wijzigingstijden, bestandssysteemkenmerken, bestandsnaam en commentaar bevatten. De invoerkop kan worden uitgebreid met een aangepast extra veld om aangepaste metagegevens op te slaan. Het is mogelijk om Zip64-headers op te nemen om meer dan 65.535 vermeldingen per archief te ondersteunen. De maximale grootte van een ZIP-archief met Zip64-extensie is 264−1 bytes. ZIP-archief kan in verschillende bestanden worden opgesplitst. In dat geval slaat de centrale map de verschuivingen van elk volume op voor snelle toegang tot een bepaald item.
Populariteit van het zip-archief en ondersteuning
ZIP is het nummer één archiefformaat. ZIP-archieven worden zo algemeen erkend en ondersteund dat verschillende softwaretoepassingen, waaronder populaire bestandsbeheerders zoals Windows Explorer, macOS Finder en open-source tools zoals 7-Zip en WinRAR , native ondersteuning bieden voor ZIP-bestanden maken en uitpakken. Deze ondersteuning strekt zich uit tot cloudopslagdiensten, e-mailclients en zelfs mobiele apparaten.
Voorbeelden van het gebruik van zip-bestanden
Zip-archieven zijn een alomtegenwoordig bestandsformaat voor het comprimeren en organiseren van gegevens, waardoor ze essentieel zijn in verschillende softwaretoepassingen. Bewerkingen met archieven via .NET stellen ontwikkelaars in staat moeiteloos met Zip-bestanden te werken. In de volgende codevoorbeelden gaan we dieper in op de mogelijkheden van bewerkingen met Zip-archief, waarbij we laten zien hoe u nieuwe Zip -archieven kunt maken en hoe u efficiënt bestanden kunt extraheren uit bestaande. Deze voorbeelden helpen u de mogelijkheden van deze bibliotheek te benutten om Zip-archieven naadloos te beheren in uw .NET-projecten
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);
}
}
Aanvullende informatie over Zip-archieven
Mensen hebben ernaar gevraagd
1. Welke versleutelingsmethode moet ik kiezen?
ZIP-formaat ondersteunt traditionele (ZipCrypto) en moderne AES-coderingstechnieken. De eerste is een stuk zwakker dan de laatste en gemakkelijk breekbaar; ZipCrypto wordt ondersteund door Aspose.ZIP voor legacy. Gebruik bij het samenstellen van een archief alleen AES256-codering.
2. Is er een manier om te profiteren van multi-coreprocessors voor compressie?
Met Aspose.ZIP kunt u vermeldingen van een ZIP-archief samenstellen met verschillende CPU-kernen. Dit kan de totale compressietijd aanzienlijk verkorten. Zie een artikel met uitleg en gebruiksvoorbeeld.
3. Kan een virus zip infecteren?
Ja, virussen kunnen mogelijk bestanden in een Zip-archief infecteren als de bestanden zelf zijn geïnfecteerd. Hoewel het Zip-formaat zelf niet inherent schadelijk is, kan het geïnfecteerde bestanden opslaan en transporteren, net als elk ander bestandsformaat.