Sample code for 30+ languages & platforms
Swift

Iterate Over ZIP Entries Using EntryAt

This example demonstrates how to use the EntryAt method to iterate over all entries contained within a ZIP archive.

The EntryAt method retrieves a ZipEntry object for a given zero-based index.

This is useful for:

  • Enumerating all entries in a ZIP archive
  • Inspecting filenames, sizes, and timestamps
  • Searching or filtering ZIP contents

Suppose the ZIP archive contains:

docs/readme.txt
images/logo.png
data/config.json

The example loops through all ZIP entries and prints information about each entry.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    success = false

    // Open an existing ZIP archive.
    let zip = CkoZip()!

    success = zip.open(zipPath: "example.zip")
    if success == false {
        print("\(zip.lastErrorText!)")
        return
    }

    // Get the total number of entries in the ZIP archive.
    var numEntries: Int = zip.numEntries.intValue

    print("Number of ZIP entries = \(numEntries)")

    // Create a ZipEntry object that will be reused
    // for each entry retrieved by EntryAt.
    let entry = CkoZipEntry()!

    // Iterate over all ZIP entries.
    var i: Int = 0
    while i < numEntries {

        // Retrieve the entry at index i.
        success = zip.entry(at: i, entry: entry)
        if success == false {
            print("\(zip.lastErrorText!)")
            return
        }

        print("Entry \(i)")
        print("  FileName: \(entry.fileName!)")
        print("  Uncompressed Length: \(entry.uncompressedLength)")
        print("  Compressed Length: \(entry.compressedLength)")
        print("")

        i = i + 1
    }

    // Sample output:
    // 
    // Entry 0
    //   FileName: docs/readme.txt
    //   Uncompressed Length: 1204
    //   Compressed Length: 512
    // 
    // Entry 1
    //   FileName: images/logo.png
    //   Uncompressed Length: 84211
    //   Compressed Length: 84102
    // 

    zip.close()

    print("Done.")

}