Před výměnou souborů (například e-mailem) je často komprimujeme, abychom zmenšili jejich velikost před odesláním. V aplikaci 4D v18 můžete soubory komprimovat a dekomprimovat pomocí programování, aniž byste potřebovali externí knihovny nebo nástroje. Zde jsou nové příkazy, které vám to umožní:
Komprimace souborů a složek
Nový Zip Create archive umožňuje vytvořit archiv zip předáním souboru, složky nebo objektu s parametry(např. , hesla pro čtení archivu).
Komprese souboru:
C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/file.zip")
$file :=Folder(fk desktop folder).file("MyDocs/text.txt")
ZIP Create archive ($file;$destination).
Komprese složky:
C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/Images.zip")
$folder :=Folder(fk desktop folder).folder("MyDocs/Images")
ZIP Create archive ($folder;$destination).
Komprese s heslem a ukazatelem průběhu:
C_OBJECT($zip)
(
$destination :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
$zip .password:="heslo"
$zip .callback:=Formula(FormulaCompressing ($1))
progID :=Progress New
ZIP Create archive$zip;$destination)
Progress QUIT (progID)
Metoda FormulaCompressing:
Progress SET PROGRESS (progID;Num($1/100)).
Rozbalení souborů a složek
Nový ZIP Read archive vrátí objekt archivu. Manipulací s tímto objektem můžete snadno získat seznam souborů v archivu, rozbalit konkrétní soubor nebo rozbalit celý archiv atd.
Přečtení obsahu archivu
C_OBJECT($archive;$path)
$path :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive :=ZIP Read archive($path)
Získání seznamu souborů a složek
$folders:=$archive.root.folders()
$files :=$archive.root.files()
Přečtení obsahu souboru bez extrakce
If ($files[$i] .extension=".txt")
$txt :=$files[$i].getText()
Else
$blob :=$files[$i].getContent()
End if
Extrakce souboru z archivu
$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))
Extrahovat všechny soubory
$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))