Compresser/décompresser des fichiers et des dossiers avec ces commandes

Traduit automatiquement de Deepl

Avant d’échanger des fichiers (par email par exemple), nous les compressons souvent pour réduire leur taille avant de les transmettre. Avec 4D v18, vous pouvez compresser et décompresser vos fichiers par programmation sans avoir besoin de bibliothèques ou d’outils externes. Voici les nouvelles commandes qui vous permettent de le faire :

Exemple HDI

Compresser les fichiers et les dossiers

La nouvelle commande Zip Create archive vous permet de créer une archive zip en passant soit un fichier, soit un dossier, soit un objet avec des paramètres(par exemple, un mot de passe pour lire l’archive).

Compresser un fichier :

C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MesDocs/fichier.zip")
$file :=Folder(fk desktop folder).file("MesDocs/text.txt")
ZIP Create archive (
$file;$destination)

Compresser un dossier :

C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MesDocs/Images.zip")
$folder :=Folder(fk desktop folder).folder("MesDocs/Images")
ZIP Create archive (
$folder;$destination)

Compresser avec un mot de passe et une barre de progression :

C_OBJECT($zip)
$destination :=Folder(fk desktop folder).file("MesDocs/Archive.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MesDocs/Ressources" ).folders()
$zip .password:= "password"
$zip .callback:=Formula(FormulaCompressing ($1))

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

La méthode FormulaCompressing:

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

Décompresser des fichiers et des dossiers

Une nouvelle ZIP Read archive renvoie un objet archive. En manipulant cet objet, vous pouvez facilement obtenir la liste des fichiers de l’archive, extraire un fichier particulier, ou extraire l’archive entière, etc.

Lire le contenu de l’archive

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

Récupérer la liste des fichiers et des dossiers

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

Lire le contenu d’un fichier sans extraction

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

Extraire le fichier de l’archive

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

Extraire tous les fichiers

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

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.