Notícias:

SMF - Just Installed!

Main Menu

pmicrotar-0.4

Iniciado por adalberto, Agosto 21, 2019, 05:15:58 PM

tópico anterior - próximo tópico

adalberto

Baixar-> http://www.mediafire.com/file/wre1o0nd81huofv/pmicrotar.zip/file

Quem é do mundo *nix já deve conhecer o formato *.tar, muitas vezes confundido com um tipo de compressão de arquivo. Na verdade, trata-se de um formato de empacotamento, apenas une vários arquivos ou, até mesmo, diretórios.

O formato TAR pode ser usado em conjunto com bibliotecas de compressão de dados dando assim origem a extensões como tar.gz, tar.xz ou tar.7z. Isto significa que os dados foram comprimidos e empacotados no formato TAR.

Pensando na importância de criar e manipular arquivos no formato TAR é que fiz uma biblioteca pequena, mas poderosa, baseada no microtar da linguagem C.

Com ela será possível ler, criar e manipular arquivos *.tar, tanto no Linux quanto Windows. Apenas o empacotamento, ela não faz a compressão, para isso veja as bibliotecas de compressão em Prisma.

Outro fato importante é que esta biblioteca não lê os arquivos, apenas monta o empacotamento, ficando a cargo do programador carregar os arquivos em string, empacotá-los e depois gravar em disco.

Veja um simples exemplo de escrita (para mais detalhes veja o manual e exemplos na pasta do download)

local mtar = inclua'pmicrotar'


funcao leia_arquivobin(n)
  local a,err = es.abra(n,'leiturabin');
  se nao a entao retorne falso, err; fim
  local txt = a:leia('*t');
  a:feche();
  retorne txt;
fim

 
local dado1 = leia_arquivobin('dados/arq1.txt'); //lemos um arquivo para uma variável string.
   
local tar,err = mtar.abra("simples.tar",'escrita');//abrimos um arquivo tar para escrita (gravar dados nele)
 
se nao tar entao imprima('Erro:',err,'\nEnter para sair...'); leia(); sis.saia(1) fim //se der erro o programa imprime e sai.
 
mtar.escreva_cabecalho_arquivo(tar,"dados/arq1.txt",#dado1);//criamos um cabeçalho com o nome do arquivo (diretório completo)
  //note que na função acima é necessário passar o tamanho da string dado '#dado1';
mtar.escreva_dado(tar,dado1)//agora podemos gravar os dados.
  //aqui no meio poderia escrever muitos outros arquivos antes de finalizar e fechar.
mtar.finalize(tar);
mtar.feche(tar); 

poe('Processo terminado, verifique o arquivo "simples.tar", ENTER para sair...');
leia();