[Xojo 2023r3] Cómo usar Zip y Unzip

A continuación encontrarás traducido al castellano el artículo de William Yu publicado originalmente en el blog oficial de Xojo.

A partir de Xojo 2023 Release 3, se ha ampliado la clase FolderItem con nuevos métodos para hacer Zip y Unzip sobre archivos y carpetas. A continuación te mostramos lo sencillo que resulta utilizar esta nueva capacidad.

¿Cuáles son las novedades?

Xojo 2023r3 añade los nuevos métodos FolderItem.Zip y FolderItem.Unzip con soporte para el formato de compresión DEFLATE usado más comúnmente.

  • Zip(destination As FolderItem, contentsOnly As Boolean = False, compression As ZipCompressions = ZipCompressions.Normal) As FolderItem
  • Zip(contentsOnly As Boolean = False, compression As ZipCompressions = ZipCompressions.Normal) As FolderItem Unzip() Unzip(destinationFolder As FolderItem)

Cómo hacer Zip

Este es un ejemplo de como hacer zip sobre AlgunaCarpeta en tu Escritorio:

Var algunaCarpeta As FolderItem = SpecialFolder.Desktop.Child("AlgunaCarpeta")
Var outputFile As FolderItem = algunaCarpeta.Zip

El archivo outputFile se creará en el Escritorio con el nombre “AlgunaCarpeta.zip”.

Este archivo zip contendrá una única carpeta, también llamada “AlgunaCarpeta”, junto con los contenidos de dicha carpeta.

+- AlgunaCarpeta.zip
  +- AlgunaCarpeta
    +- File1.ext
    +- File2.ext
    +- etc.

Si sólo quieres comprimir los contenidos de “AlgunaCarpeta” entonces has de pasar True como valor del parámetro contentsOnly.

Var outputFile As FolderItem = myFolder.Zip(True)

Ahora el archivo zip sólo incluye los contenidos de la carpeta “AlgunaCarpeta”.

+- AlgunaCarpeta.zip
  +- File1.ext
  +- File2.ext
  +- etc.

Nota: en macOS, cuando el sistema operativo descomprime este tipo de jerarquía de carpetas zip, creará automáticamente una carpeta con los contenidos independientemente de cuál se la jerarquía del archivo zip. Sin embargo, esto no afecta a nuestro propio método FolderItem.Unzip.

Puedes utilizar el método Zip sobrecargado que toma un FolderItem de destino para indicar dónde se creará el archivo zip.

Var destinationFolder As FolderItem = SpecialFolder.Documents
Var outputFile As FolderItem = myFolder.Zip(destinationFolder)

En este caso “outputFile” se crea en la carpeta Documentos del usuario. Si quieres renombrarlo usando algo diferente al nombre por defecto con la extensión “.zip”, también puedes utilizar esta sintaxis para pasar el archivo de destino en vez de una carpeta de destino.

Var destinationFile As FolderItem = SpecialFolder.Desktop.Child("MyZipFile.zext")
Var outputFile As FolderItem = myFolder.Zip(destinationFile)

Si bien mediante estos ejemplos sólo hemos demostrado cómo comprimir una carpeta en formato zip, se aplica la misma sintaxis para comprimir una carpeta como archivo.

Cómo hacer Unzip

Por el contrario, si lo que quieres es descomprimir un archivo zip, simplemente has de invocar FolderItem.Unzip:

outputFile.Unzip

Esta línea descomprime los contenidos de outputFile en el mismo directorio en el que se encuentre el archivo. Si quieres descomprimir los contenidos a una ubicación diferente, has de pasar la carpeta en cuestión como destino:

outputFile.Unzip(SpecialFolder.Temporary)

En conclusión, comprimir y descomprimir archivos Zip ¡nunca fue tan sencillo! (Gracias en parte a zlib).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *