ZIPArchive
Un archivo ZIP 4D es un objeto File
o Folder
que contiene uno o más archivos o carpetas, que se comprimen para ser más pequeños que su tamaño original. Estos archivos se crean con una extensión ".zip" y pueden utilizarse para ahorrar espacio en el disco o transferir archivos a través de medios que pueden tener limitaciones de tamaño (por ejemplo, el correo electrónico o la red).
- Cree un archivo ZIP 4D con el comando ZIP Create archive.
- Las instancias 4D
ZIPFile
yZIPFolder
están disponibles a través de la propiedadroot
(ZIPFolder
) del objeto devuelto por el comando ZIP Read archive.
Ejemplo
Para recuperar y ver el contenido de un 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 // guardar la carpeta principal del zip
$zipFile:=$zipFolder.files()[0] //leer la primera carpeta comprimida
If($zipFile.extension=".txt")
$txt:=$zipFile.getText()
End if
Resumen
.root : 4D.ZipFolder una carpeta virtual que permite acceder al contenido del archivo ZIP |
ZIP Create archive
Historia
Lanzamiento | Modificaciones |
---|---|
19 R3 | Adición de las propiedades ZIP Compression LZMA , ZIP Compression xy , .level |
18 | Añadidos |
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ámetros | Tipo | Descripción | |
---|---|---|---|
fileToZip | 4D.File | -> | Objeto archivo o carpeta a comprimir |
folderToZip | 4D.Folder | -> | Objeto archivo o carpeta a comprimir |
zipStructure | Object | -> | Objeto archivo o carpeta a comprimir |
destinationFile | 4D.File | -> | Archivo de destino del archivo |
options | Integer | -> | Opción folderToZip: ZIP Without enclosing folder |
Result | Object | <- | Objeto estado |
Descripción
El comando ZIP Create archive
crea un objeto archivo ZIP comprimido y devuelve el estado de la operación.
Puede pasar un objeto 4D.File, 4D.Folder, o una estructura zip como primer parámetro:
-
fileToZip: pase simplemente un
4D.File
a comprimir. -
folderToZip: pase un
4D.Folder
para comprimir. En este caso, el parámetro options permite comprimir sólo el contenido de la carpeta (es decir, excluir la carpeta padre). Por defecto,ZIP Create archive
comprimirá la carpeta y su contenido, de modo que la operación de descompresión volverá a crear una carpeta. Si desea que la operación de descompresión restaure sólo el contenido de la carpeta, pase la constanteZIP Without enclosing folder
en el parámetro options. -
zipStructure: pase un objeto que describa el objeto ZIP archivo. Las siguientes propiedades están disponibles para definir la estructura:
Propiedad | Tipo | Descripción | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
compression | Integer | ZIP Compression standard : Compresión Deflate (por defecto)ZIP Compression LZMA : Compression LZMAZIP Compresión XZ : Compression XZZIP Compresión : sin compresión | ||||||||||||
level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omite: ZIP Compression standard : 6ZIP Compression LZMA : 4ZIP Compression XZ : 4 | ||||||||||||
encryption | Integer | El cifrado a usar si se define una contraseña:ZIP Encryption AES128 : encriptación AES utilizando llave de 128 bits.ZIP Encryption AES192 : encriptación AES utilizando llave de 192 bits.ZIP Encryption AES256 : encriptación AES utilizando llave de 256 bits (por defecto si se define la contraseña).ZIP Encryption none : los datos no están cifrados (por defecto si no se define una contraseña) | ||||||||||||
contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | ||||||||||||
Histórico | Collection | 4D.File o 4D.Folder o
| ||||||||||||
retrollamada | 4D.Function | Una fórmula de retrollamada que recibirá la progresión de la compresión (0 - 100) en $1. |
En el parámetro destinationFile, pase un objeto 4D.File
que describa el archivo ZIP a crear (nombre, ubicación, etc.). Se aconseja utilizar la extensión ".zip" si quiere que el archivo ZIP sea procesado automáticamente por cualquier software.
Once an archive is created, you can use the ZIP Read archive command to access it.
Status object
El objeto status devuelto contiene las siguientes propiedades:
Propiedad | Tipo | Descripción |
---|---|---|
statusText | Text | Mensaje de error (si lo hay): |
status | Integer | Código de estado |
success | Boolean | True si el archivo se ha creado con éxito, si no, false |
Ejemplo 1
Para comprimir un archivo 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)
Ejemplo 2
Para comprimir una carpeta 4D.Folder
sin la carpeta en sí:
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)
Ejemplo 3
Para comprimir una estructura de archivo ZIP con una contraseña y una barra de progreso:
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))
Ejemplo 4
Quiere pasar una colección de carpetas y archivos para comprimir al 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)
Ejemplo 5
Desea utilizar un algoritmo de compresión alternativo con un alto nivel de compresión:
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 //por defecto es 4
$destination:=Folder(fk desktop folder).file("images.zip")
$err:=ZIP Create archive($zip; $destination)
ZIP Read archive
Historia
Lanzamiento | Modificaciones |
---|---|
18 | Añadidos |
ZIP Read archive ( zipFile : 4D.File { ; password : Text }) : 4D.ZipArchive
Parámetros | Tipo | Descripción | |
---|---|---|---|
zIPFile | 4D.File | -> | Archivos Zip |
contraseña | Text | -> | Contraseña del archivo ZIP, si la hay |
Result | 4D.ZipArchive | <- | Objeto archivo |
Descripción
The ZIP Read archive
command retrieves the contents of zipFile and returns it as a 4D.ZipArchive
object.
Este comando no descomprime el archivo ZIP, sólo ofrece una vista de su contenido. To extract the contents of an archive, you need to use methods such as file.copyTo() or folder.copyTo().
Pase un objeto 4D.File
que haga referencia al archivo ZIP comprimido en el parámetro zipFile. The target archive file will be opened until the ZIP Read archive
has finished executing and all contents/references have been extracted/released, then it will be closed automatically.
If the zipFile is password protected, you need to use the optional password parameter to provide a password. Si se requiere una contraseña pero no se pasa al intentar leer el contenido del archivo, se genera un error.
Objeto archivo
El objeto 4D.ZipArchive
devuelto contiene una única propiedad root
cuyo valor es un objeto 4D.ZipFolder
. Esta carpeta describe todo el contenido del archivo ZIP.
Ejemplo
Para recuperar y ver el contenido de un 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 la lista de los archivos y carpetas del archivo:
$folders:=$archive.root.folders()
$files:=$archive.root.files()
Para leer el contenido de un archivo sin extraerlo de la carpeta root:
If($files[$i].extension=".txt")
$txt:=$files[$i].getText()
Else
$blob:=$files[$i].getContent()
End if
Para extraer desde la carpeta root:
//extract a file
$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))
//extract all files
$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))
.root
.root : 4D.ZipFolder
Descripción
La propiedad .root
contiene una carpeta virtual que permite acceder al contenido del archivo ZIP.
The root
folder and its contents can be manipulated with the ZipFile and ZipFolder functions and properties.
Esta propiedad es de solo lectura.