Sample code for 30+ languages & platforms
Swift

Iterate Through ZIP Entries Using EntryAt and ZipEntry.GetNext

See more Zip Examples

This example demonstrates how to iterate through all entries in a ZIP archive using:

  • Zip.EntryAt to obtain the first entry
  • ZipEntry.GetNext to advance through the remaining entries

The example prints each ZIP entry's stored filename and whether the entry is a file or directory.

This approach is useful when sequentially processing ZIP entries without repeatedly calling EntryAt by index.

Suppose the ZIP archive contains:

docs/
docs/readme.txt
images/logo.png
hello.txt

The example iterates through each entry in the order stored within the ZIP archive.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    let zip = CkoZip()!

    // Open an existing ZIP archive.
    success = zip.open(zipPath: "c:/temp/example.zip")
    if success == false {
        print("\(zip.lastErrorText!)")
        return
    }

    // A ZIP archive may contain zero entries.
    if zip.numEntries.intValue == 0 {

        print("The ZIP archive is empty.")

        zip.close()
        return
    }

    // ------------------------------------------------------------
    // Get the first ZIP entry.
    // 
    // EntryAt(0,entry) initializes the ZipEntry object so that
    // it represents the first entry in the ZIP archive.
    // 
    let entry = CkoZipEntry()!

    success = zip.entry(at: 0, entry: entry)
    if success == false {
        print("\(zip.lastErrorText!)")
        return
    }

    // ------------------------------------------------------------
    // Iterate through all ZIP entries.
    // 
    // GetNext updates the same ZipEntry object so that it
    // represents the next entry in the ZIP archive.
    // 
    while (success == true) {

        if entry.isDirectory == true {

            print("[Directory] \(entry.fileName!)")

        }
        else {

            print("[File] \(entry.fileName!)")
        }

        // Advance to the next entry.
        success = entry.getNext()
    }

    zip.close()

    print("Done.")

}