Sample code for 30+ languages & platforms
DataFlex

Unzip an Entire ZIP Archive While Preserving Directory Structure

See more Zip Examples

Extract an Entire ZIP Archive While Preserving Directory Structure

This example demonstrates how to use the Unzip method to extract all files and directories from a ZIP archive.

The example shows how the stored ZIP directory structure is recreated beneath the target extraction directory.

Suppose the ZIP archive contains:

aaa/pigs.json
bbb/base64Cert.txt
bbb/sub1/brasil_cert.pem
bbb/sub2/penguins.gif
bbb/sub2/starfish.jpg
hamlet.xml
hello.pdf

After extraction to:

c:/temp/testDir

The following filesystem structure will be created:

c:/temp/testDir/aaa/pigs.json
c:/temp/testDir/bbb/base64Cert.txt
c:/temp/testDir/bbb/sub1/brasil_cert.pem
c:/temp/testDir/bbb/sub2/penguins.gif
c:/temp/testDir/bbb/sub2/starfish.jpg
c:/temp/testDir/hamlet.xml
c:/temp/testDir/hello.pdf

If the target extraction directory does not already exist, it is automatically created.

The Unzip method returns the number of files extracted, or -1 if the extraction fails.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Integer iNumFilesUnzipped
    String sTemp1

    Move False To iSuccess

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

    // Open an existing ZIP archive.
    Get ComOpenZip Of hoZip "qa_data/zips/sample.zip" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // ------------------------------------------------------------
    // Extract all files to:
    // 
    //     c:/temp/testDir
    // 
    // If the target directory does not already exist,
    // Chilkat will automatically create it.
    // 
    // The Unzip method recreates the stored ZIP directory
    // structure beneath the target directory.
    // 
    Get ComUnzip Of hoZip "c:/temp/testDir" To iNumFilesUnzipped

    If (iNumFilesUnzipped < 0) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Number of files extracted = " iNumFilesUnzipped
    Showln ""

    // ------------------------------------------------------------
    // Suppose the ZIP archive contains these entries:
    // 
    //     aaa/pigs.json
    //     bbb/base64Cert.txt
    //     bbb/sub1/brasil_cert.pem
    //     bbb/sub2/penguins.gif
    //     bbb/sub2/starfish.jpg
    //     hamlet.xml
    //     hello.pdf
    // 
    // After extraction, the following files will exist:
    // 
    //     c:/temp/testDir/aaa/pigs.json
    //     c:/temp/testDir/bbb/base64Cert.txt
    //     c:/temp/testDir/bbb/sub1/brasil_cert.pem
    //     c:/temp/testDir/bbb/sub2/penguins.gif
    //     c:/temp/testDir/bbb/sub2/starfish.jpg
    //     c:/temp/testDir/hamlet.xml
    //     c:/temp/testDir/hello.pdf
    // 
    // The ZIP directory structure is preserved during extraction.

    // Close the ZIP archive.
    Send ComCloseZip To hoZip

    Showln "Unzip completed successfully."


End_Procedure