Visão geral

Arquivos que consistem em entradas possuem o método createEntries para compactar a pasta inteira. Tais métodos respeitam a estrutura de diretórios e são compostos recorrentemente para todas as subpastas. Além disso, você pode adicionar uma única entrada de arquivo a uma subpasta arbitrária em qualquer lugar do arquivo.

Como compactar uma pasta

Se quiser criar um arquivo ZIP de uma pasta inteira preservando a estrutura, você pode usar a API Aspose.Zip para Java e o código a seguir. A construção try-with-resources fecha automaticamente o recurso Archive depois que todo o código foi executado, independentemente de todos os arquivos terem sido fechados corretamente. O caminho especificado no objeto Arquivo corpus indica a pasta que será compactada. Com createEntries, cada elemento do arquivo é adicionado separadamente, preservando assim a estrutura original, que é armazenada em um arquivo chamado archive.zip. É importante ressaltar que o código não verifica a existência da pasta “D:\Data” ou a presença de arquivos nela. Se o diretório não existir ou estiver vazio, o código não criará nenhum arquivo.
O método CreateEntries possui um segundo parâmetro opcional includeRootDirectory que indica se o diretório raiz precisa ser incluído no arquivo. O padrão é verdadeiro, portanto, no exemplo acima, todas as entradas do arquivo estarão localizadas na pasta "Dados". Se você deseja que apenas o conteúdo do diretório seja adicionado, passe false lá.
Exemplo - Criar arquivo da pasta:

    try (Archive archive = new Archive()) {
        File corpus = new File("D:\\Data");
        archive.createEntries(corpus);
        archive.save("archive.zip");
    }

O exemplo de código a seguir cria um arquivo ZIP com dois arquivos: "image.bmp" e "lyrics.txt". As variáveis ​​fi1 e fi2 representam esses arquivos. O método createEntry do objeto de arquivo é usado para adicionar cada arquivo ao arquivo com os caminhos especificados: "data\pictures" para "image.bmp" e "data\text" para "lyrics.txt". Em resumo, este código cria um arquivo ZIP denominado "archive.zip" contendo duas pastas, "data\pictures" e "data\text", cada uma contendo um dos respectivos arquivos.

    try (Archive archive = new Archive()) {
        File fi1 = new File("image.bmp");
        File fi2 = new File("lyrics.txt");
        archive.createEntry("data\\pictures\\photo.bmp", fi1);
        archive.createEntry("data\\text\\song.txt", fi2);
        archive.save("archive.zip");
    }

Como compactar pasta no 7-ZIP respeitando sua estrutura

O código a seguir demonstra como criar um arquivo 7Z e adicionar a ele todos os arquivos e pastas do diretório especificado. Funciona de forma semelhante a um arquivo com formato ZIP. CreateEntries é o método analógico do arquivo 7Z. Também possui o parâmetro includeRootDirectory. Importante: será implementado em Aspose.ZIP for Java 24.4

    try (SevenZipArchive archive = new SevenZipArchive()) {
        File corpus = new File("D:\\Data");
        archive.createEntries(corpus);
        archive.save("archive.7z");
    }

Como compactar uma pasta no TAR mantendo sua estrutura

O código cria um arquivo TAR para o diretório especificado. Ele utiliza a classe TarArchive da API Java Archive para conseguir isso. O método createEntries adiciona todos os arquivos e pastas do diretório ao arquivo, preservando a estrutura de diretórios. Finalmente, o método save grava o conteúdo do arquivo no arquivo "archive.tar".
Amostra:

    try (TarArchive archive = new TarArchive()) {
        archive.createEntries("D:\\Data");
        archive.save("archive.tar");
    }

O código fornecido cria um arquivo TAR denominado "archive.tar" contendo duas entradas. Directory Archive - Adiciona todos os arquivos e pastas do diretório "D:\Data" ao arquivo, preservando a estrutura de diretórios. Isso arquiva efetivamente todo o conteúdo do diretório especificado. E entrada de arquivo único - adiciona um arquivo específico chamado "data.bin" da subpasta "interna" ao arquivo. Isso permite incluir um arquivo específico sem arquivar toda a estrutura de diretórios. Em resumo, esse código cria um arquivo TAR que combina arquivamento em nível de diretório e inclusão de arquivo individual.
Exemplo 2 – Combine o diretório de arquivamento e arquivo único

    try (TarArchive archive = new TarArchive()) {
        archive.createEntries("D:\\Data");
        archive.createEntry("inner\\data.bin", "data.bin");
        archive.save("archive.tar");
    }

Outros recursos da API Aspose.ZIP com suporte para Java

Com a biblioteca Aspose.ZIP em Java, você pode lidar perfeitamente com várias tarefas relacionadas a documentos de arquivo ZIP. Se você precisa converter formatos, mesclar arquivos, editar conteúdo ou extrair dados, o Aspose.ZIP oferece funcionalidade abrangente para agilizar seu fluxo de trabalho e aumentar a produtividade.

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: