ZIPArchive
Um arquivo 4D Zip é um objetoFile
ou Folder
contendo um ou mais arquivos ou pastas, que são comprimidos para ter um tamanho menor que o original. Esses arquivos são criados com uma extensão ".zip" e podem ser usados para poupar espaço em disco ou transferir arquivos via meios que tenham limitações de tamanho (por exemplo, um email ou por uma rede).
- Pode criar um arquivo 4D ZIP com o comando ZIP Create archive.
- As instâncias
ZIPFile
eZIPFolder
de 4D estão disponíveis vai a propriedaderoot
(ZIPFolder
) do objeto retornado pelo comando ZIP Read archive.
Exemplo
Para recuperar e ver os conteúdos de um objeto ZIP file:
var $path; $archive : 4D. File
var $zipFile : 4D. ZipFile
var $zipFolder : 4D. ZipFolder
var $txt : Text
$path:=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive:=ZIP Read archive($path)
$zipFolder:=$archive.root // store the zip main folder
$zipFile:=$zipFolder.files()[0] //read the first zipped file If($zipFile.extension=".txt")
$txt:=$zipFile.getText()
End if
Resumo
.root : 4D. ZipFolder uma pasta virtual que permite o acesso ao conteúdo do arquivo ZIP |
ZIP Create archive
Histórico
Release | Mudanças |
---|---|
19 R3 | Adição das propriedades ZIP Compression LZMA , ZIP Compression xy , .level |
18 | Adicionado |
ZIP Create archive ( fileToZip : 4D. File ; destinationFile : 4D. File ) : Object
ZIP Create archive ( folderToZip : 4D. Folder ; destinationFile : 4D. File { ; options : Integer }) : Object
ZIP Create archive ( zipStructure : Object ; destinationFile : 4D. File ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
fileToZip | 4D. File | -> | Objeto File ou Folder a comprimir |
folderToZip | 4D. Folder | -> | Objeto File ou Folder a comprimir |
zipStructure | Object | -> | Objeto File ou Folder a comprimir |
destinationFile | 4D. File | -> | Arquivo destino para o arquivo |
options | Integer | -> | Option folderToZip: ZIP Without enclosing folder |
Resultados | Object | <- | Objeto de estado |
|
Descrição
O comando ZIP Create archive
cria um objecto de arquivo ZIP comprimido e devolve o estado da operação.
You can pass a 4D. File, a 4D. Folder, or a zip structure object as first parameter:
-
fileToZip: simplesmente passar
4D. File
para compactar. -
folderToZip: You pass a
4D. Folder
to compress. Nesse caso, o parâmetro options permite compactar só os conteúdos da pasta (ou seja, excluir a pasta parente). Como padrão,ZIP Create archive
compacta a pasta e seus conteúdos, assim a operação de descompactação vai recriar a pasta. Se quiser que a operação de descompactação restaure apenas os conteúdos da pasta, passe a cosntanteZIP Without enclosing folder
no parâmetro options. -
zipStructure: pode passar um objeto descrevendo o objeto ZIP archive. As propriedades abaixo estão disponíveis para definir a estrutura:
Propriedade | Tipo | Descrição | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compression | Integer | ZIP Compression standard : Reduz a compactação (padrão)ZIP Compression LZMA : compactação LZMAZIP Compression XZ : compactação XZZIP Compression none : Sem compactação | ||||||||||||
level | Integer | Nível de compressão. Valores possíveis: de 1 a 10. Um valor pequeno produz um arquivo de maior tamanho, enquanto um valor grande produz um arquivo de tamanho menor. O nível de compactação tem um impacto na performance. Valores padrão se omitidos: ZIP Compression standard : 6ZIP Compression LZMA : 4ZIP Compression XZ : 4 | ||||||||||||
encryption | Integer | A criptografia a usar se uma senha for estabelecida:ZIP Encryption AES128 : criptografia AES com uma chave de 128-bits.ZIP Encryption AES192 : criptografia AES com uma chave de 192-bits.ZIP Encryption AES256 : criptografia AES com chave de 256-bits (padrão se uma senha for estabelecida).ZIP Encryption none : os dados não são criptografados (padrão se não estabelecer uma senha) | ||||||||||||
senha | Text | Uma senha a usar se a criptografia for necessária. | ||||||||||||
files | Collection | 4D. File or 4D. Folder objects or
| ||||||||||||
callback | 4D. Function | Uma fórmula de callback (retrochamada) que recebe o progresso da compactação (0-100) em $1. |
In the destinationFile parameter, pass a 4D. File
object describing the ZIP archive to create (name, location, etc.). É recomendado usar a extensão ".zip" se quiser que o arquivo ZIP seja processado automaticamente por um software.
Quando um arquivo for criado, pode usar o comando ZIP Read archive para acessá-lo.
Objeto de estado
O estado do objeto retornado contém as propriedades abaixo:
Propriedade | Tipo | Descrição |
---|---|---|
statusText | Text | Mensagem de erro (se houver): |
status | Integer | Código de estado |
success | Parâmetros | True se o arquivo for criado com sucesso, senão false |
Exemplo 1
To compress a 4D. File
:
var $file; $destination : 4D. File
var $status : Object
$destination:=Folder(fk desktop folder).file("MyDocs/file.zip")
$file:=Folder(fk desktop folder).file("MyDocs/text.txt")
$status:=ZIP Create archive($file;$destination)
Exemplo 2
To compress a 4D. Folder
without the folder itself:
var $folder : 4D. Folder
var $destination : 4D. File
var $status : Object
$destination:=Folder(fk desktop folder).file("MyDocs/Images.zip")
$folder:=Folder(fk desktop folder).folder("MyDocs/Images")
$status:=ZIP Create archive($folder;$destination;ZIP Without enclosing folder)
Exemplo 3
Para compactar uma estrutura de arquivo ZIP sem uma senha e barra de progresso:
var $destination : 4D. File
var $zip;$status : Object
var progID : Integer
$destination:=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$zip:=New object
$zip.files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
$zip.password:="password"
$zip.callback:=Formula(myFormulaCompressingMethod($1))
progID:=Progress New //we use the 4D Progress component
$status:=ZIP Create archive($zip;$destination)
Progress QUIT(progID)
myFormulaCompressingMethod
:
var $1 : Integer
Progress SET PROGRESS(progID;Num($1/100))
Exemplo
Pode passar uma coleção de pastas e arquivos para compactar ao objeto zipStructure:
var $destination : 4D. File
var $zip;$err : Object
$zip:=New object
$zip.files:=New collection
$zip.files.push(New object("source";Folder(fk desktop folder).file("Tests/text.txt")))
$zip.files.push(New object("source";Folder(fk desktop folder).file("Tests/text2.txt")))
$zip.files.push(New object("source";Folder(fk desktop folder).file("Images/image.png")))
$destination:=Folder(fk desktop folder).file("file.zip")
$err:=ZIP Create archive($zip;$destination)
Exemplo 2
Deseja utilizar um algoritmo de compressão alternativo com um elevado nível de compressão:
var $destination : 4D. File
var $zip; $err : Object
$zip:=New object
$zip.files:=New collection
$zip.files.push(Folder(fk desktop folder).folder("images"))
$zip.compression:=ZIP Compression LZMA
$zip.level:=7 //padrão é 4
$destination:=Folder(fk desktop folder).file("images.zip")
$err:=ZIP Create archive($zip; $destination)
ZIP Read archive
Histórico
Release | Mudanças |
---|---|
18 | Adicionado |
ZIP Read archive ( zipFile : 4D. File { ; password : Text }) : 4D. ZipArchive
Parâmetro | Tipo | Descrição | |
---|---|---|---|
zipFile | 4D. File | -> | Arquivos Zip |
senha | Text | -> | Senha do arquivo ZIP, se houver |
Resultados | Parâmetros | <- | Objeto arquivo |
|
Descrição
The .root
property contains a virtual folder providing access to the contents of the ZIP archive.
O comando não descompacta o arquivo ZIP, apenas oferece uma visão de seus conteúdos. Para extrair os conteúdos do arquivo, precisa usar métodos como file.copyTo() ou folder.copyTo().
fileToZip: You simply pass a 4D. File
to compress.
Se zipFile for protegido por uma senha, precisa usar o parâmetro opcional password ´para fornecer uma senha. Se uma senha for exigida mas não for passada, quando tentar ler os conteúdos do arquivo um erro será gerado.
Objeto arquivo
The returned 4D. ZipArchive
object contains a single root
property whose value is a 4D. ZipFolder
object. Esta pasta descreve todo o conteúdo do ficheiro ZIP.
Exemplo
Para recuperar e ver os conteúdos de um objeto ZIP file:
var $archive : 4D. ZipArchive
var $path : 4D. File
$path:=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive:=ZIP Read archive($path)
Para recuperar a lista dos arquivos e pastas no arquivo:
$folders:=$archive.root.folders()
$files:=$archive.root.files()
Para extrair da pasta root:
If($files[$i].extension=".txt")
$txt:=$files[$i].getText()
Else
$blob:=$files[$i].getContent()
End if
Para ler todos os conteúdos de um arquivo sem extraí-lo da pasta root:
//extrair um arquivo
$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))
//extrair todos os arquivos
$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))
.root
.root : 4D. ZipFolder
Descrição
A propriedade .root
contém uma pasta virtual que permite o acesso ao conteúdo do arquivo ZIP.
A pasta root
e seus conteúdos podem ser manipulados com as funções e propriedades ZipFile e ZipFolder.
Essa propriedade é apenas leitura.