{"id":3080,"date":"2017-06-30T13:21:35","date_gmt":"2017-06-30T17:21:35","guid":{"rendered":"http:\/\/linguagemprisma.br4.biz\/blog\/?p=3080"},"modified":"2017-06-30T13:47:33","modified_gmt":"2017-06-30T17:47:33","slug":"conjunto-de-ferramentas-arq-arquivamento","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/prisma\/conjunto-de-ferramentas-arq-arquivamento\/","title":{"rendered":"Conjunto de ferramentas arq (arquivamento)"},"content":{"rendered":"<p>Estou criando\u00a0um conjunto de bibliotecas referentes a compress\u00e3o, empacotamento, descompress\u00e3o e extra\u00e7\u00e3o\u00a0 de arquivos. J\u00e1 tenho tr\u00eas boas libs, todas v\u00e3o ficar em uma pasta chamada &#8216;arq&#8217;.<\/p>\n<p>Baixe <a href=\"http:\/\/linguagemprisma.br4.biz\/prisma_forum\/index.php?action=dlattach;topic=61.0;attach=37\" target=\"_blank\">&lt;arqui&gt;<\/a>.<\/p>\n<p>As bibliotecas que j\u00e1 tenho desenvolvidas s\u00e3o:<\/p>\n<p>1 &#8211; Compress\u00e3o e extra\u00e7\u00e3o lzw.pris:\u00a0 lzw =\u00a0 inclua&#8217;arq.lzw&#8217;; Apenas para texto, n\u00e3o \u00e9 eficiente para m\u00eddias como fotos etc.<\/p>\n<p>2 &#8211; Gzip &#8211; Somente extra\u00e7\u00e3o: zzlib.pris (extrai arquivos *.gz ):\u00a0 gz = inclua&#8217;arq.zzlib&#8217;;<\/p>\n<p>3 &#8211; Empacotamento e extra\u00e7\u00e3o de arquivos pac.pris (une arquivos em um s\u00f3. Por enquanto n\u00e3o tem suporte a pastas mas logo ter\u00e1.)<\/p>\n<p>Essas libs s\u00e3o feitas em puro c\u00f3digo Prisma logo \u00e9 compat\u00edvel com qualquer plataforma tendo Prisma instalada.<\/p>\n<p>As duas primeiras foram convertidas de Lua para Prisma. J\u00e1 a \u00faltima \u00e9 autoria minha mesmo.<\/p>\n<p>Baixe <a href=\"http:\/\/linguagemprisma.br4.biz\/prisma_forum\/index.php?action=dlattach;topic=61.0;attach=37\" target=\"_blank\">&lt;arqui&gt;<\/a> (Na pr\u00f3xima vers\u00e3o Prisma esta lib ser\u00e1 adicionada como padr\u00e3o.)<\/p>\n<p>Veja os exemplos abaixo:<\/p>\n<p>Teste com lzw:<\/p>\n<pre class=\"lang:prisma decode:true \">local lzw = inclua'arq.lzw';\r\nlocal dir=inclua'igdir';\r\n\r\nARQ='igpbr.c'; \/\/mude o nome para algum arquivo alvo seu.\r\npasta,nome,ext=sis.nome_arquivo(ARQ);\r\n\r\nlocal txt = dir.leia_arquivobin(ARQ) ou 'aaaaaaabbbbbbbbbbcccccccccc';\r\n\r\nt1 = sis.tempo();\r\npoe'Iniciando, aguarde...';\r\ncomp = lzw.comprima(txt);\r\npoe'Compressao terminada';\r\npoe'iniciando descompress\u00e3o';\r\ndec = lzw.extraia(comp);\r\npoe'Descompressao terminada';\r\n\r\ndir.grave_arquivobin(nome .. '.lzw',comp);\r\ndir.grave_arquivobin(nome .. '2.' .. ext, dec);\r\n\r\nimprima(\"Tempo Gasto:\", sis.diftempo(sis.tempo(),t1),'segundos');\r\nimprima('Economizados', #dec - #comp,'bytes');\r\n\r\npoe'Processo terminado! (ENTER para sair)';\r\nleia();<\/pre>\n<p>Teste descompacta\u00e7\u00e3o *.gz :<\/p>\n<pre class=\"lang:prisma decode:true \">local z = inclua'arq.zzlib'\r\nlocal dir=inclua'igdir'\r\n\r\nin = 'igpbr.c.gz'\r\nout = 'z_igpbr.c'\r\ntmp1 = sis.tempo();\r\npoe'Extraindo..';\r\nlocal ret = z.extrair_arq(in);\/\/retorna string do arquivo descompactado.\r\n\r\npoe'Extracao completa'\r\nimprima('Tempo:',sis.diftempo(sis.tempo(),tmp1) );\r\npoe'Gravando arquivo...'\r\nse ret entao\r\n  dir.grave_arquivobin(out,ret);\r\nfim\r\nimprima('Tempo:',sis.diftempo(sis.tempo(),tmp1) );\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Teste de empacotamento\u00a0 pac.pris :<\/p>\n<pre class=\"lang:prisma decode:true \">local pac = inclua'arq.pac'; \/\/lib pacote de empacotamento:\r\n\r\nlocal a = pac.abra('zz_teste.pac'); \/\/criando o arquivo de empacotamento\r\n\r\nret, err = a:insira('zz_igpbr.c', 'igpbr.c');\/\/insere o arquivo igpbr.c com nome 'zz_igpbr.c';\r\nse nao ret entao erro(err) fim;\r\n\r\n\r\nret, err = a:insira('zz_teste_pac.prisma', 'teste_pac.prisma');\r\nse nao ret entao erro(err) fim;\r\n\r\na:grave(); \/\/gravando os arquivos inseridos acima.\r\na:feche();\/\/no final fechamos o arquivo;\r\n\r\n\r\npoe'Lendo o arquivo agora: [ENTER para continuar...]';\r\n\r\n\r\n\r\n\/\/lendo o conte\u00fado para uma string.\r\na = pac.abra('zz_teste.pac');\r\ntxt,err = a:busque('zz_teste_pac.prisma');\/\/retorna em string:\r\n\r\nse txt entao\r\n  poe(txt);\r\nsenao\r\n imprima(err);\r\nfim\r\n\r\n\r\n\/\/extraindo um arquivo:\r\nret,err = a:extraia('zz_igpbr.c','zzz_igpbr.c');\r\na:feche();\r\n\r\nse nao ret entao imprima(err); sis.saia(1) fim\r\n\r\npoe'Arquivo descompactado';\r\n\r\n\r\n\/*\r\na:extraia();\/\/sem parametros extrai todos:\r\n*\/\r\n\r\npoe'Processo terminado ENTER para sair...';\r\nleia();\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Esta \u00faltima lib (pac.pris) ser\u00e1 melhorada para permitir empacotamento de pastas inteiras e assim unir em um \u00fanico arquivo, podendo ser usada em conjunto com alguma lib de compacta\u00e7\u00e3o.<\/p>\n<p>H\u00e1 uma lib lz4 feita em C de r\u00e1pida compress\u00e3o e descompress\u00e3o, estar\u00e1 dispon\u00edvel na vers\u00e3o 1.0.101 ou posterior.<\/p>\n<p>At\u00e9 mais.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estou criando\u00a0um conjunto de bibliotecas referentes a compress\u00e3o, empacotamento, descompress\u00e3o e extra\u00e7\u00e3o\u00a0 de arquivos. J\u00e1 tenho tr\u00eas boas libs, todas v\u00e3o ficar em uma pasta chamada &#8216;arq&#8217;. Baixe &lt;arqui&gt;. As bibliotecas que j\u00e1 tenho desenvolvidas s\u00e3o: 1 &#8211; Compress\u00e3o e extra\u00e7\u00e3o lzw.pris:\u00a0 lzw =\u00a0 inclua&#8217;arq.lzw&#8217;; Apenas para texto, n\u00e3o \u00e9 eficiente para m\u00eddias como fotos&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,7],"tags":[],"class_list":["post-3080","post","type-post","status-publish","format-standard","hentry","category-arquivos","category-prisma"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=3080"}],"version-history":[{"count":4,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3080\/revisions"}],"predecessor-version":[{"id":3084,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/3080\/revisions\/3084"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=3080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=3080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=3080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}