Arquivo

Archive for the ‘Archive Zip’ Category

Archive Zip: Zipando e Extraindo Arquivos (Parte II)

A tarefa de descompactar arquivos utilizando o Archive Zip é algo extremamente fácil.

Com apenas dois comandos é possivel fazer isto. Acredita?

Vejamos.

Descompactando Arquivos

Logo na instânciação já chamamos o arquivo zipado ao qual iremos descompactar.

my $zip = new Archive::Zip( “C:/arquivos.zip” );

Também poderiamos ter usado o mesmo comando com o construtor vazio, e em seguida ter utilizado o comando Read, porém utilizamos menos espaço na memória por optar pela primeira opção.

Com todos os arquivos armazenados na variável $zip, nos resta apenas chamar a função que transformará estes dados em arquivos. Esta é a extractTree( ).

A função extractTree( ) nos permite definir três parâmetros, sendo estes opcionais. O primeiro parâmetro determina que se extrairá apenas as pastas que, em seus nomes, tiverem os caracteres que forem definidos nele. O segundo parâmetro apenas altera, no nome do arquivo, os caracteres definidos como necessários por quaisquer outros.

Estes dois parâmetros iniciais não traremos a atenção, a não ser o terceiro parâmetro que é onde definiremos o local onde os arquivos extraídos serão colocados.

$zip->extractTree(”,”,”C:/arquivos/”);

Fim. E você não acreditou que com dois comandos o Perl iria realizar esta proeza?

Mas é só o Perl mesmo!

Perl, I Love It.


Veja o Código Completo:
(zip-exemplo2.pl)

 

#!/usr/bin/perl
use Archive::Zip;

$arquivo=”C:/arquivos.zip”;  # Arquivo compactado
$saida   = “C:/arquivos/”;       # Pasta de saída

my $zip = new Archive::Zip($arquivo); # Abre o arquivo
die “Erro ao Gravar” unless $zip->extractTree( ‘ ‘ , ‘ ‘ , $saida ) == AZ_OK;
# Extrai os dados a menos que encontre algum erro

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