Tempo aproximado para leitura: 00:02:00 min
Dúvida
É possível compactar uma pasta ou um diretório?
Ambiente
Cross Segmento - TOTVS Backoffice Linha Protheus – ADVPL – A partir da versão 11.80
Solução
Para compactar um diretório, é necessário utilizar a função FZip() que compacta arquivos, junto com a função Directory() que busca os arquivos dentro de um diretório especificado.
Exemplo:
User Function fziptst ()
local nX := 1
local aFiles := {}, aFileFun := {}
Local cDir := "\imp\teste\" //Diretorio da pasta que deseja compactar
aFileFun := Directory( cDir + "*", "A") //Busca todos os arquivos do diretorio passado
For nX = 1 to len(aFileFun)
aadd(aFiles, cDir + aFileFun[nX][1]) //Adiciona os arquivos e o diretorio no array aFiles
NEXT nX
nret := FZip("\imp\compactado.zip", aFiles, cDir) //Compacta os arquivos sem copiar o diretorio
if nret!=0
conout("Não foi possível criar o arquivo zip")
else
conout("Arquivo zip criado com sucesso")
endif
Return
0 Comentários