Comprima/descomprima archivos y carpetas con estos comandos

Traducido automáticamente de Deepl

Antes de intercambiar archivos (por correo electrónico, por ejemplo), a menudo los comprimimos para reducir su tamaño antes de transmitirlos. Con 4D v18, puede comprimir y descomprimir sus archivos mediante programación sin necesidad de librerías o herramientas externas. Aquí están los nuevos comandos que le permiten hacerlo:

Ejemplo de HDI

Comprimir archivos y carpetas

El nuevo Zip Create archive permite crear un archivo zip pasando un fichero, una carpeta o un objeto con parámetros(por ejemplo, una contraseña para leer el archivo).

Comprimir un archivo:

C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MisDocs/archivo.zip")
$file
:=Folder(fk desktop folder ).file("MisDocs/texto.txt")
ZIP Create archive
($file;$destination )

Comprime una carpeta:

C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MisDocs/Imágenes.zip")
$folder :=Folder(fk desktop folder).folder("MisDocs/Imágenes")

ZIP Create archive ($folder;$destination )

Comprimir con una contraseña y una barra de progreso:

C_OBJECT($zip)
$destination :=Folder(fk desktop folder).file("MisDocs/Archivo.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MisDocs/Recursos").folders()
$zip .password:="contraseña"
$zip .callback:=Formula(FormulaCompressing ($1))

progID :=Progress New
ZIP Create archive ($zip;$destination)
Progress QUIT (progID)

El método FormulaCompressing:

Progress SET PROGRESS (progID;Num($1/100))

Descomprimir archivos y carpetas

El nuevo ZIP Read archive devuelve un objeto de archivo. Manipulando este objeto, se puede obtener fácilmente la lista de ficheros dentro del archivo, extraer un fichero concreto, o extraer todo el archivo, etc.

Leer el contenido del archivo

C_OBJECT($archive;$path)
$path :=Folder(fk desktop folder).file("MisDocumentos/Archivo.zip")
$archive :=ZIP Read archive($path )

Recuperar la lista de archivos y carpetas

$folders:=$archive.root.folders()
$files :=$archive.root.files()

Leer el contenido de un archivo sin extraerlo

If ($files[$i].extension=".txt")
$txt :=$files[$i].getText()
Else
$blob :=$files[$i].getContent()
End if

Extraer el fichero del archivo

$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))

Extraer todos los archivos

$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MisOctos"))

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.