Os arquivos ZIP são um dos formatos de arquivo compactados mais populares e usados. A principal razão para usar arquivos ZIP é reduzir o tamanho total do arquivo e enviar vários arquivos como um único arquivo. Como desenvolvedor, você pode extrair o texto, as imagens e até os metadados dos arquivos compactados em arquivos ZIP. Neste artigo, discutiremos como extrair dados de arquivos ZIP em Java.

Extraia dados de arquivos ZIP em Java

Os seguintes tópicos são abordados abaixo:

API Java para extrair dados de arquivos ZIP

GroupDocs.Parser fornece a solução de análise de documentos para desenvolvedores que também inclui a API Java. Estarei usando esta API Java para extrair dados de arquivos ZIP no(s) exemplo(s) deste artigo. Além disso, essa API permite a extração de dados de imagens, texto bruto, texto estruturado e formatado e metadados de uma longa lista de formatos de documento suportados. Esses formatos de documentos incluem documentos de processamento de texto, PDF, apresentações, planilhas, e-mails, bancos de dados, eBooks e muitos outros.

Baixe ou configure

Você pode baixar o arquivo JAR da seção de downloads, ou apenas obter o repositório mais recente e as configurações de dependência para o pox.xml de seus aplicativos Java baseados em maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

Como extrair dados de arquivos ZIP em Java

Para extrair os dados de qualquer arquivo incluído no arquivo, primeiro você precisa obter todos os arquivos incluídos. Depois disso, você pode extrair ainda qualquer tipo de dados de cada arquivo. As etapas a seguir mostram como extrair dados de arquivos ZIP e recuperar texto de cada arquivo incluído em Java.

  • Carregue o arquivo ZIP usando a classe Parser.
  • Extraia a coleção de anexos usando o método getContainer.
  • Percorra os anexos para os dados de cada arquivo incluído.
  • Você pode obter seus diferentes tipos de dados usando os respectivos métodos da classe Parser.

O código-fonte mostra como extrair os dados dos arquivos ZIP usando Java. O exemplo abaixo extrai todo o texto de todos os arquivos dentro do arquivo ZIP.

// Extrair dados de arquivos ZIP em Java
Parser parser = new Parser("path/archive.zip");
// Extraia anexos do contêiner
Iterable<ContainerItem> attachments = parser.getContainer();

// Iterar sobre a coleção de entidades ZIP
for (ContainerItem item : attachments) {
    // Imprima as INFORMAÇÕES DO ARQUIVO
    System.out.println("-----------------------------------");
    System.out.println("Name: " + item.getName());
    System.out.println("File Size: " + item.getSize() + " Bytes");
    System.out.println("-----------------------------------");

    try {
        Parser attachmentParser = item.openParser();
        TextReader reader = attachmentParser.getText();
        System.out.println(reader == null ? "No text" : reader.readToEnd());
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("Isn't supported.");
    }
}

A saída do código-fonte acima mostra o texto recuperado de um dos arquivos PDF dentro do arquivo ZIP.

 -----------------------------------
 Name: sample.pdf
 File Size: 33370 Bytes
 -----------------------------------

 Heading

 This is the first paragraph of the sample document that contains some sample
 text, bulleted list, numbered list and more.

    •  Bullet Item 1
    •  Bullet Item 2
    •  Bullet Item 3
 
 This is the second paragraph of the sample document and after this, there is a
 numbered list: 

    1. Numbered Item 1
    2. Numbered Item 2
    3. Numbered Item 3 

Extraia imagens de arquivos dentro de arquivos ZIP em Java

Não se limitando apenas ao texto, você também pode extrair as informações das imagens. As etapas a seguir mostram como extrair dados de arquivos ZIP e recuperar informações de imagens de cada arquivo incluído.

  • Carregue o arquivo ZIP usando a classe Parser.
  • Extraia a coleção de anexos usando o método getContainer.
  • Percorra os anexos para obter a coleção de imagens dentro de cada anexo.
  • Agora percorra as imagens para obter as informações de cada imagem usando a classe PageImageArea.

O código-fonte a seguir mostra como extrair dados de imagens dos arquivos incluídos nos arquivos ZIP em Java.

// Extraia informações de imagens do arquivo dentro do arquivo ZIP em Java
Parser parser = new Parser("path/archive.zip");
// Extraia anexos do contêiner
Iterable<ContainerItem> attachments = parser.getContainer();

// Iterar sobre a coleção de entidades ZIP
for (ContainerItem item : attachments) {
    try {
        Parser attachmentParser = item.openParser();
        Iterable<PageImageArea> images = attachmentParser.getImages();
        if (images != null) {
            int imageCount = 1;
            for (PageImageArea image : images) {
                // Imprima um índice de página, retângulo e tipo de imagem:
                System.out.println(String.format("Image# %d \nPage: %d\nFile Type: %s", imageCount, image.getPage().getIndex()+1, image.getFileType()));
                imageCount++;
            }
        }
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("Isn't supported.");
    }
}
Image# 1 
Page: 1
File Type: JPEG Image (.jpeg) 

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem as limitações de avaliação.

Conclusão

Resumindo, você aprendeu como extrair dados de arquivos ZIP dentro de seus aplicativos Java. Além disso, você também pode extrair imagens dos arquivos ZIP usando GroupDocs.Parser para Java. Comece a construir seu aplicativo Java de extração de dados para arquivos compactados. Para saber mais sobre a API, visite a documentação. Para dúvidas, entre em contato conosco através do fórum.

Veja também