Saltar al contenido principal
Versión: 20 R10 BETA

ZIP Create archive

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ámetrosTipoDescripción
fileToZip4D.FileObjeto archivo o carpeta a comprimir
folderToZip4D.FolderObjeto archivo o carpeta a comprimir
zipStructureObjectObjeto archivo o carpeta a comprimir
destinationFile4D.FileArchivo de destino del archivo
optionsIntegerOpción folderToZip: ZIP Without enclosing folder
ResultadoObjectObjeto estado
Historia
LanzamientoModificaciones
19 R3Adición de las propiedades ZIP Compression LZMA, ZIP Compression xy, .level
18Añadidos

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 constante ZIP 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:

PropiedadTipoDescripción
compressionInteger
  • ZIP Compression standard: Compresión Deflate (por defecto)
  • ZIP Compression LZMA: Compression LZMA
  • ZIP Compresión XZ: Compression XZ
  • ZIP Compresión: sin compresión
  • levelIntegerNivel 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: 6
  • ZIP Compression LZMA: 4
  • ZIP Compression XZ: 4
  • encryptionIntegerThe encryption to use if a password is set:
  • ZIP Encryption AES128: AES encryption using 128-bit key.
  • ZIP Encryption AES192: AES encryption using 192-bit key.
  • ZIP Encryption AES256: AES encryption using 256-bit key (default if password is set).
  • ZIP Encryption none: Data is not encrypted (default if no password is set)
  • contraseñaTextUna contraseña a utilizar si se requiere encriptación.
    HistóricoCollection
  • una colección de objetos 4D.File o 4D.Folder o
  • una colección de objetos con las siguientes propiedades:
  • PropiedadTipoDescripción
    source4D.Archivo o 4D.CarpetaArchivo o Carpeta
    destinoTexto(opcional) - Especifique una ruta de archivo relativa para cambiar la organización del contenido del archivo
    optionnumber(opcional) - ZIP Ignore invisible files o 0 para comprimir todo el archivo
    retrollamada4D.FunctionUna 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.

    Una vez creado un archivo, puede utilizar el comando ZIP Read archive para acceder a él.

    Status object

    El objeto status devuelto contiene las siguientes propiedades:

    PropiedadTipoDescripción
    statusTextTextMensaje de error (si lo hay):
  • Cannot open ZIP archive
  • Cannot create ZIP archive
  • Password is required for encryption
  • statusIntegerCódigo de estado
    successBooleanTrue 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 //utilizamos el componente 4D Progress

    $status:=ZIP Create archive($zip;$destination)

    Progress QUIT(progID)

    myFormulaCompressingMethod:

     #DECLARE ($current : Integer)
    Progress SET PROGRESS(progID;Num($current /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)

    Ver también

    ZipArchive Class ZipFile Class ZipFolder Class ZIP Read archive

    Propiedades

    Número de comando1640
    Hilo seguro