Formato de arquivo ZIP

Na era digital, onde os dados são fundamentais e a eficiência do armazenamento é fundamental, os arquivos ZIP continuam sendo uma solução constante e onipresente para compactar e organizar arquivos.

Sobre informações do arquivo Zip

ZIP é um formato de arquivo que pode conter um ou vários arquivos e pastas compactados sem perdas, com ou sem criptografia. ZIP é o formato mais popular conhecido há mais de trinta anos e compatível com praticamente todos os sistemas operacionais modernos. Este formato também se estendeu a alguns outros formatos como JAR e OpenDocument.

Informações do histórico do formato do arquivo zip-archive

A primeira especificação de formato ZIP foi publicada em 1989. Os autores da ideia ZIP foram Phil Katz e Gary Conway. Foi um sucesso imediato devido à sua eficiência na redução do tamanho dos arquivos, facilitando o armazenamento e a transmissão de arquivos em conexões lentas de Internet e nas capacidades de armazenamento limitadas da época. Desde 1993, ele oferece suporte ao método de compactação Deflate mais comum. A criptografia AES forte foi introduzida em 2003. Apesar de ser bastante antigo, o padrão não se tornou fóssil - está sendo desenvolvido ativamente nos dias de hoje. Assim, em 2020, foi expandido com os métodos de compressão Zstandard, MP3 e XZ.

Estrutura do arquivo ZIP

Os arquivos ZIP são projetados nesta estrutura hierárquica para armazenar e organizar com eficiência arquivos compactados, permitindo fácil acesso a arquivos individuais dentro do arquivo. Cada entrada do arquivo é compactada separadamente, podendo até mesmo ter seu próprio método de compactação e criptografia. A entrada dentro do arquivo possui um cabeçalho anterior com metadados do arquivo original. O índice reside no final do arquivo. Essa abordagem permite compor um arquivo autoextraível (SFX), que também permanece um arquivo ZIP válido devido à parte executável residir no início do arquivo SFX.

Métodos de compressão Zip

O ZIP moderno permite compactar dados com algoritmos Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard. O arquivo também pode ser armazenado sem compactação. O mais comum é o Deflate, que é padrão em qualquer ferramenta de arquivamento. Existem também algoritmos para compactação sem perdas de arquivos específicos: MP3, JPEG, WAV. Aspose.ZIP suporta totalmente os métodos Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd e Zstandard. Permite a extração de áudio compactado WavPack.

Operações suportadas por arquivo Zip

Usando Aspose.ZIP, você pode lidar com arquivos ZIP de várias maneiras. Você pode compor um arquivo, adicionar entradas a um arquivo existente sem reembalá-lo, excluir entradas de um arquivo existente sem afetar o restante do arquivo e extrair entradas arbitrárias ou todo o arquivo. Você pode criptografar e descriptografar cada entrada separadamente com o algoritmo de criptografia AES legado ou moderno. Aspose.ZIP é capaz de criar arquivos ZIP autoextraíveis e de vários volumes.

Arquivo Zip - Estrutura Interna

Como foi dito, o diretório central, que é o índice, está localizado no final do arquivo ZIP. Este diretório atua como um índice, listando todas as entradas de arquivo no arquivo junto com suas posições dentro do arquivo. Os cabeçalhos de entrada podem incluir horários de criação e modificação, atributos do sistema de arquivos, nome do arquivo e comentários. O cabeçalho da entrada pode ser expandido com um campo extra personalizado para armazenar metadados personalizados. É possível incluir cabeçalhos Zip64 para suportar mais de 65.535 entradas por arquivo. O tamanho máximo do arquivo ZIP com extensão Zip64 é 264-1 bytes. O arquivo ZIP pode ser dividido em vários arquivos. Nesse caso, o diretório central armazena deslocamentos de cada volume para acesso rápido a uma entrada específica.

Arquivo Zip - Estrutura Interna

Popularidade do arquivo Zip e suporte

ZIP é o formato de arquivo número um. Os arquivos ZIP são tão amplamente reconhecidos e suportados que vários aplicativos de software, incluindo gerenciadores de arquivos populares como o Windows Explorer, o macOS Finder e ferramentas de código aberto como o 7-Zip e WinRAR , fornecem suporte nativo para criação e extração de arquivos ZIP. Esse suporte se estende a serviços de armazenamento em nuvem, clientes de e-mail e até mesmo dispositivos móveis.

Exemplos de uso de arquivos Zip

Os arquivos Zip são um formato de arquivo onipresente para compactar e organizar dados, tornando-os essenciais em vários aplicativos de software. As operações com arquivos via .NET permitem que os desenvolvedores trabalhem com arquivos Zip sem esforço. Nos exemplos de código a seguir, vamos nos aprofundar nos recursos de operações com arquivo Zip, demonstrando como criar novos arquivos Zip e extrair com eficiência arquivos de os que existem. Esses exemplos ajudarão você a aproveitar os recursos desta biblioteca para gerenciar arquivos Zip perfeitamente em seus projetos .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);
    }
}

Informações adicionais sobre arquivos Zip

As pessoas têm perguntado

1. Qual é o motivo mais comum para compactar um arquivo zip?

O motivo mais comum para compactar um arquivo Zip é reduzir o tamanho do arquivo para armazenamento, transmissão e organização eficientes de dados.

2. Por que o zip é chamado de arquivo?

Zip é chamado de arquivo porque atua como um fichário digital, agrupando vários arquivos e diretórios em uma única entidade compactada, semelhante à forma como os arquivos físicos armazenam e organizam documentos. Esta função de arquivamento simplifica o armazenamento e a transferência de dados, reduzindo o número de arquivos individuais e o espaço de armazenamento geral necessário.

3. O vírus pode infectar o zip?

Sim, os vírus podem potencialmente infectar arquivos dentro de um arquivo Zip se os próprios arquivos estiverem infectados. Embora o formato Zip em si não seja inerentemente prejudicial, ele pode armazenar e transportar arquivos infectados, assim como qualquer outro formato de arquivo.