Arquivo

Posts Tagged ‘addtree’

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.

  1. 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.

  2. 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’.

  3. 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ída

my $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 arquivo

die “Erro ao Gravar” unless $zip->writeToFileNamed( $saida ) == AZ_OK;
# Se não obter erros, cria arquivo zipado