Formato de archivo ZIP

En la era digital, donde los datos son reyes y la eficiencia del almacenamiento es primordial, los archivos ZIP siguen siendo una solución firme y ubicua para comprimir y organizar archivos.

Acerca de la información del archivo Zip

ZIP es un formato de archivo que puede contener uno o varios archivos y carpetas comprimidos sin pérdidas, con o sin cifrado. ZIP es el formato más popular conocido desde hace más de treinta años y es compatible con prácticamente todos los sistemas operativos modernos. Este formato también se extendió a otros formatos como JAR y OpenDocument.

Información del historial del formato del archivo comprimido

La primera especificación de formato de ZIP se publicó en 1989. Los autores de la idea de ZIP fueron Phil Katz y Gary Conway. Fue un éxito inmediato debido a su eficiencia para reducir el tamaño de los archivos, lo que facilita el almacenamiento y la transmisión de archivos a través de conexiones lentas a Internet y capacidades de almacenamiento limitadas de esa época. Desde 1993 admite el método de compresión Deflate más común. El cifrado AES fuerte se introdujo en 2003. A pesar de ser bastante antiguo, el estándar no se ha convertido en un fósil: hoy en día se está desarrollando activamente. Por eso, en 2020 se amplió con los métodos de compresión Zstandard, MP3 y XZ.

Estructura del archivo ZIP

Los archivos ZIP están diseñados en esta estructura jerárquica para almacenar y organizar archivos comprimidos de manera eficiente y al mismo tiempo permitir un fácil acceso a archivos individuales dentro del archivo. Cada entrada del archivo se comprime por separado, incluso puede tener su propio método de compresión y cifrado. La entrada dentro del archivo tiene un encabezado anterior con los metadatos del archivo original. La tabla de contenido se encuentra al final del archivo. Este enfoque permite componer un archivo autoextraíble (SFX), que también sigue siendo un archivo ZIP válido debido a que la parte ejecutable reside al principio del archivo SFX.

Métodos de compresión zip

El ZIP moderno permite comprimir datos con los algoritmos Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard. El archivo también se puede almacenar sin compresión. El más común es Deflate, que es el predeterminado en cualquier herramienta de archivado. También existen algoritmos para la compresión sin pérdidas de archivos específicos: MP3, JPEG, WAV. Aspose.ZIP es totalmente compatible con los métodos Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd y Zstandard. Permite la extracción de audio comprimido WavPack.

Operaciones compatibles con el archivo Zip

Con Aspose.ZIP, puede manejar archivos ZIP de varias maneras. Puede componer un archivo, agregar entradas al archivo existente sin volver a empaquetarlo, eliminar entradas del archivo existente sin afectar el resto del archivo y extraer entradas arbitrarias o el archivo completo. Puede cifrar y descifrar cada entrada por separado con un algoritmo de cifrado AES antiguo o moderno. Aspose.ZIP es capaz de crear archivos ZIP autoextraíbles y de varios volúmenes.

Archivo zip - Estructura interna

Como ya se ha dicho, el directorio central, que es la tabla de contenidos, se encuentra hacia el final del archivo ZIP. Este directorio actúa como un índice, enumerando todas las entradas de archivos en el archivo junto con sus posiciones dentro del archivo. Los encabezados de entrada pueden incluir horas de creación y modificación, atributos del sistema de archivos, nombre de archivo y comentarios. El encabezado de entrada se puede ampliar con un campo adicional personalizado para almacenar metadatos personalizados. Es posible incluir encabezados Zip64 para admitir más de 65.535 entradas por archivo. El tamaño máximo de un archivo ZIP con extensión Zip64 es de 264 a 1 bytes. El archivo ZIP se puede dividir en varios archivos. En tal caso, el directorio central almacena compensaciones de cada volumen para un acceso rápido a una entrada particular.

Archivo zip - Estructura interna

Popularidad del archivo Zip y soporte

ZIP es el formato de archivo número uno. Los archivos ZIP son tan ampliamente reconocidos y compatibles que varias aplicaciones de software, incluidos administradores de archivos populares como Windows Explorer, macOS Finder y herramientas de código abierto como 7-Zip y WinRAR , brindan soporte nativo para crear y extraer archivos ZIP. Este soporte se extiende a servicios de almacenamiento en la nube, clientes de correo electrónico e incluso dispositivos móviles.

Ejemplos de uso de archivos Zip

Los archivos zip son un formato de archivo omnipresente para comprimir y organizar datos, lo que los hace esenciales en diversas aplicaciones de software. Las operaciones con archivos a través de .NET permiten a los desarrolladores trabajar con archivos Zip sin esfuerzo. En los siguientes ejemplos de código, profundizaremos en las capacidades de las operaciones con el archivo Zip y demostraremos cómo crear nuevos archivos Zip y extraer archivos de manera eficiente. Los que existen. Estos ejemplos lo ayudarán a aprovechar las capacidades de esta biblioteca para administrar archivos Zip sin problemas en sus proyectos .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);
    }
}

Información adicional sobre archivos Zip


h2: Información adicional sobre archivos Zip

La gente ha estado preguntando

1. ¿Qué método de cifrado debo elegir?

El formato ZIP admite técnicas de cifrado AES tradicionales (ZipCrypto) y modernas. El primero es mucho más débil que el segundo y fácilmente rompible; ZipCrypto es compatible con Aspose.ZIP para versiones heredadas. Utilice únicamente cifrado AES256 al redactar un archivo.

2. ¿Existe alguna forma de aprovechar los procesadores multinúcleo para la compresión?

Aspose.ZIP le permite componer entradas de archivos ZIP mediante diferentes núcleos de CPU. Esto puede reducir significativamente el tiempo total de compresión. Consulte un artículo con una explicación y un ejemplo de uso.

3. ¿Puede el virus infectar zip?

Sí, los virus pueden potencialmente infectar archivos dentro de un archivo Zip si los archivos mismos están infectados. Si bien el formato Zip en sí no es inherentemente dañino, puede almacenar y transportar archivos infectados, como cualquier otro formato de archivo.