Sample code for 30+ languages & platforms
DataFlex

Add Multiple Files to a ZIP Using AppendFiles

See more Zip Examples

This example demonstrates how to use the AppendFiles method to add multiple files matching wildcard patterns to a ZIP archive.

The example adds:

  • All .txt files from one directory.
  • All .xml files recursively from another directory tree.

The AppendFiles method adds references to matching files in the local filesystem. The files are not actually read or compressed until a Write* method is called.

When recursive mode is enabled (recurse = _TRUE_), relative subdirectory paths are preserved within the ZIP archive.

For example, suppose the local filesystem contains the following directory tree:

c:/data/invoices/2024/january/inv001.xml
c:/data/invoices/2024/january/inv002.xml
c:/data/invoices/2024/february/inv003.xml

And the following call is made:

zip.AppendFiles("c:/data/*.xml",_TRUE_);

Then the following paths will be stored in the ZIP archive:

invoices/2024/january/inv001.xml
invoices/2024/january/inv002.xml
invoices/2024/february/inv003.xml

The portion of the path preceding the wildcard root (c:/data/) is not stored in the ZIP archive.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatZip)) To hoZip
    If (Not(IsComObjectCreated(hoZip))) Begin
        Send CreateComObject of hoZip
    End

    Get ComNewZip Of hoZip "appendFilesExample.zip" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Add all .txt files from c:/reports.
    // Subdirectories are not included because recurse=ckfalse.
    Get ComAppendFiles Of hoZip "c:/reports/*.txt" False To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Add all .xml files recursively from c:/data.
    // Relative subdirectory paths are preserved within the ZIP archive.
    Get ComAppendFiles Of hoZip "c:/data/*.xml" True To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Write the ZIP archive to disk and close it.
    // The source files are consumed at this time.
    Get ComWriteZipAndClose Of hoZip To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "ZIP archive created successfully."


End_Procedure