Skip to main content
Version: Next

ZIP Read archive

ZIP Read archive ( zipFile : 4D.File { ; password : Text }) : 4D.ZipArchive

ParameterTypeDescription
zipFile4D.FileZip archive file
passwordTextZIP archive password if any
Result4D.ZipArchiveArchive object
History
ReleaseChanges
18Added

Description

The ZIP Read archive command retrieves the contents of zipFile and returns it as a 4D.ZipArchive object.

This command does not uncompress the ZIP archive, it only provides a view of its contents. To extract the contents of an archive, you need to use methods such as file.copyTo() or folder.copyTo().

Pass a 4D.File object referencing the compressed ZIP archive in the zipFile parameter. The target archive file will be opened until the ZIP Read archive has finished executing and all contents/references have been extracted/released, then it will be closed automatically.

If the zipFile is password protected, you need to use the optional password parameter to provide a password. If a password is required but not passed when trying to read the contents of the archive, an error is generated.

Archive object

The returned 4D.ZipArchive object contains a single root property whose value is a 4D.ZipFolder object. This folder describes the whole contents of the ZIP archive.

Example

To retrieve and view the contents of a ZIP file object:

 var $archive : 4D.ZipArchive
var $path : 4D.File

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

To retrieve the list of the files and folders in the archive:

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

To read the contents of a file without extracting it from the root folder:


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

To extract from the root folder:

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

//extract all files
$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))

See also

ZipArchive Class ZipFile Class ZipFolder Class ZIP Create archive

Properties

Command number1637
Thread safe