Como criar .zip ou .tar programaticamente em Java usando Apache Commons Archivers e Compressores

Publicados: 2016-03-08

Como criar .zip e .tar em Java programaticamente

A fundação Apache por padrão vem com muitos e muitos utilitários para usarmos. Na maioria dos casos, desconhecemos o utilitário que existe para uso em nosso ambiente de produção.

Neste tutorial, veremos um dos utilitários pelos quais podemos compactar qualquer arquivo ou diretório programaticamente em Java. Em outras palavras, utilitário de arquivos simples.

Por que precisamos deste utilitário?

Algum tempo atrás eu escrevi um artigo sobre como fazer upload de arquivos usando a arquitetura Spring MVC. Se você tiver um arquivo muito grande e estiver hospedando outros arquivos de usuários em algum sistema de arquivos, como netapp ou filer ou etc, convém compactar os arquivos antes do upload. Você pode casar o código abaixo em seu aplicativo para atingir o mesmo propósito.

Vamos conferir um resultado primeiro para entender melhor:

Antes de:

Crunchify Tar Utility - Arquivo e Diretório .zip ou .tar

Depois de:

arquivo crunchify*.zip criado pelo programa Java

Vamos começar:

  • Criar classe CrunchifyCompressArchivesUtility.java
  • Adicione abaixo a dependência do maven ao seu projeto.
  • Se você não tiver o projeto maven, siga estas etapas.

  • Vamos usar o utilitário de compactação de compress archivers do Apache Commons
  • A classe TarArchiveEntry representa uma entrada em um arquivo Tar. Ele consiste no cabeçalho da entrada, bem como no arquivo da entrada. As entradas podem ser instanciadas de três maneiras, dependendo de como elas serão usadas.
  • A classe TarArchiveOutputStream grava um arquivo tar UNIX como um OutputStream.
  • Vamos arquivar apenas um arquivo primeiro
  • Também no mesmo programa vamos arquivar um diretório
  • Vamos converter o arquivo e o diretório para o arquivo .zip . Se você quiser .tar , basta alterar o código abaixo.
  • Por favor, mude o caminho no código abaixo

Saída