Sample code for 30+ languages & platforms
Unicode C

Unzip Selected Files from a Zip Archive

See more Zip Examples

Demonstrates how to iterate over the files contained within a .zip and unzip specific files.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkZipW.h>
#include <C_CkZipEntryW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkZipW zip;
    const wchar_t *unzipDir;
    int n;
    HCkZipEntryW entry;
    int i;

    success = FALSE;

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

    zip = CkZipW_Create();

    success = CkZipW_OpenZip(zip,L"my_files.zip");
    if (success == FALSE) {
        wprintf(L"%s\n",CkZipW_lastErrorText(zip));
        CkZipW_Dispose(zip);
        return;
    }

    unzipDir = L"/temp/unzipDir";

    // Get the number of files and directories in the .zip
    n = CkZipW_getNumEntries(zip);

    entry = CkZipEntryW_Create();

    i = 0;
    while (i < n) {

        CkZipW_EntryAt(zip,i,entry);
        if (CkZipEntryW_getIsDirectory(entry) == FALSE) {
            // (the filename may include a path)
            wprintf(L"%s\n",CkZipEntryW_fileName(entry));

            // Your application may choose to unzip this entry
            // based on the filename.
            // If the entry should be unzipped, then call Extract(unzipDir)
            success = CkZipEntryW_Extract(entry,unzipDir);
            if (success == FALSE) {
                wprintf(L"%s\n",CkZipEntryW_lastErrorText(entry));
                CkZipW_Dispose(zip);
                CkZipEntryW_Dispose(entry);
                return;
            }

        }

        i = i + 1;
    }



    CkZipW_Dispose(zip);
    CkZipEntryW_Dispose(entry);

    }