Archive Zip: Zipando e Extraindo Arquivos (Parte I)
O Archive::Zip é um módulo Perl que nos permite trabalhar com arquivos Zip.
Podemos tanto extrair como “zipar” arquivos com ele. Mas o que é zipar? Zipar é um termo que significa compactar arquivos.
Para compactar, extrair, modificar arquivos, enfim, realizar qualquer tarefa com arquivos compressos, o Archive::Zip é uma excelente alternativa se você não está, ou não deseja depender dos comandos de um ambiente Unix.
Como em todos estes exemplos utilizaremos o Archive Zip, podemos já chamar o módulo para nosso programa:
use Archive::Zip;
Agora vamos ver como utilizá-lo em algumas tarefas.
Compactando Arquivos
O primeiro passo é criar uma instância do programa e armazená-la em uma variável.
my $zip = new Archive::Zip( );
Agora todo o conteúdo que desejamos colocar em nosso arquivo zip deverá ser inserido na variável $zip.
Existem várias alternativas para fazermos isto. Iremos mostrar como realizar esta tarefa utilizando três comandos diferentes: inserindo pastas, inserindo arquivos e criando de arquivos.
- Inserindo pastas com addTree( )
$zip->addTree(“C:/arquivos”);
Com o código acima, todo o conteúdo da pasta “C:/arquivos” será adicionado no arquivo zip.
- Inserindo arquivos com addFile( )
$zip->addFile( ‘original.txt’, ‘novo.txt’);
O comando addFile nos permite passar dois argumentos, sendo somente o primeiro obrigatório. Estes representam [localdoarquivo,][destinoarquivo]. Em nosso exemplo, o arquivo ‘original.txt’ será adicionado ao arquivo zip, porém, com o nome ‘novo.txt’.
- Criando arquivos com addString( )
$zip->addString( ‘Olá Mundo!’, “texto.txt”);
O código acima criará um arquivo chamado “texto.txt” contendo as palavras “Olá Mundo!” em seu conteúdo.
Após inserir os arquivos desejados na variável $zip, podemos transferir então os dados para arquivo com apenas uma função, a writeToFileNamed( ).
$zip->writeToFileNamed( ‘C:/arquivos.zip’ );
Veja o Código Completo:
(zip-exemplo1.pl)
#!/usr/bin/perl
use Archive::Zip;$pasta=”C:/arquivos”; # Pasta original
$saida=” C:/arquivos.zip”; # Arquivo compactado de saídamy $zip = new Archive::Zip( ); # Cria uma nova instância
$zip->addTree( $pasta ); # Adiciona uma pasta
$zip->addFile( ‘original.txt’, ‘novo.txt’); # Adiciona um arquivo
$zip->addString( ‘Olá Mundo!’, ‘texto.txt’ ); # Cria um arquivodie “Erro ao Gravar” unless $zip->writeToFileNamed( $saida ) == AZ_OK;
# Se não obter erros, cria arquivo zipado