Sample code for 30+ languages & platforms
DataFlex Requires Chilkat v11.0.0+

List Files/Directories in Zip by Index

See more Zip Examples

Demonstrates how to iterate over the files and directories in a zip archive by index.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Integer iNumEntries
    Variant vEntry
    Handle hoEntry
    Integer i
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    //  This example assumes the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

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

    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

    Get ComNumEntries Of hoZip To iNumEntries

    Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
    If (Not(IsComObjectCreated(hoEntry))) Begin
        Send CreateComObject of hoEntry
    End

    Move 0 To i
    While (i < iNumEntries)
        Get pvComObject of hoEntry to vEntry
        Get ComEntryAt Of hoZip i vEntry To iSuccess
        //  Note: In the ZIP file format, it is not required for a ZIP file to contain explicit directory entries. 
        //  However, explicit directory entries can be included for convenience and compatibility with certain ZIP file processing tools and software.
        //  An explicit directory entry in a ZIP file is an entry that specifically represents a directory, rather than a file. 
        //  It usually has a directory name with a trailing slash (/) and zero-length content.
        Get ComIsDirectory Of hoEntry To bTemp1
        If (bTemp1) Begin
            Get ComFileName Of hoEntry To sTemp1
            Showln i ": " sTemp1 " (directory)"
        End
        Else Begin
            Get ComFileName Of hoEntry To sTemp1
            Showln i ": " sTemp1
        End

        Move (i + 1) To i
    Loop

    //  Sample output:

    //  0: aaa/ (directory)
    //  1: aaa/pigs.json
    //  2: bbb/ (directory)
    //  3: bbb/base64Cert.txt
    //  4: bbb/sub1/ (directory)
    //  5: bbb/sub1/brasil_cert.pem
    //  6: bbb/sub2/ (directory)
    //  7: bbb/sub2/penguins.gif
    //  8: bbb/sub2/starfish.jpg
    //  9: hamlet.xml
    //  10: hello.pdf

    Send ComCloseZip To hoZip


End_Procedure