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

List Files in Zip using EntryAt / GetNext

See more Zip Examples

Demonstrates how to iterate over the files and directories in a zip archive using EntryAt/GetNext.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

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

    const zip = try chilkat.Zip.init();
    defer zip.deinit();

    zip.openZip("qa_data/zips/xml_files.zip") catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    const entry = try chilkat.ZipEntry.init();
    defer entry.deinit();
    var has_more_entries: bool = if (zip.entryAt(0, entry)) true else |_| false;
    while (has_more_entries) {
        if (!entry.getIsDirectory()) {
            std.debug.print("{s}\n", .{try entry.getFileName(alloc)});
        } else {
            std.debug.print("(directory) {s}\n", .{try entry.getFileName(alloc)});
        }

        has_more_entries = if (entry.getNext()) true else |_| false;
    }

    // Sample output showing both file and directory entries:

    // a1.xml
    // b1.xml
    // c1.xml
    // (directory) dir1/
    // dir1/a2.xml
    // dir1/c2.xml
    // (directory) dir2/
    // (directory) dir2/dir3/
    // dir2/dir3/c3.xml
}