Sample code for 30+ languages & platforms
DataFlex

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