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

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 Go Downloads

Go
    success := false

    //  Open an existing ZIP archive.
    zip := chilkat.NewZip()

    success = zip.OpenZip("example.zip")
    if success == false {
        fmt.Println(zip.LastErrorText())
        zip.DisposeZip()
        return
    }

    //  Get the total number of entries in the ZIP archive.
    numEntries := zip.NumEntries()

    fmt.Println("Number of ZIP entries = ", numEntries)

    //  Create a ZipEntry object that will be reused
    //  for each entry retrieved by EntryAt.
    entry := chilkat.NewZipEntry()

    //  Iterate over all ZIP entries.
    i := 0
    for i < numEntries {

        //  Retrieve the entry at index i.
        success = zip.EntryAt(i,entry)
        if success == false {
            fmt.Println(zip.LastErrorText())
            zip.DisposeZip()
            entry.DisposeZipEntry()
            return
        }

        fmt.Println("Entry ", i)
        fmt.Println("  FileName: ", entry.FileName())
        fmt.Println("  Uncompressed Length: ", entry.UncompressedLength())
        fmt.Println("  Compressed Length: ", entry.CompressedLength())
        fmt.Println("")

        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.CloseZip()

    fmt.Println("Done.")

    zip.DisposeZip()
    entry.DisposeZipEntry()