Programming Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

C Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
MIME
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip


 

 

 

 

 

 

 

 

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat C/C++ Libraries for VC++ 9.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 8.0 / Win32

Download Chilkat C/C++ 64-bit Libraries for VC++ 8.0 / x64

Download Chilkat Visual Studio 2005 C/C++ Libs for Windows Mobile, Pocket PC, SmartPhone, WinCE

Download Chilkat C/C++ Libraries for VC++ 7.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 6.0 / Win32

Download Chilkat C/C++ Libraries for VC++ 6.0, Win 95/98/NT4 Compatible

#include <C_CkZip.h>

void ChilkatSample(void)
    {
    HCkZip zip;
    BOOL success;
    BOOL recurse;

    zip = CkZip_Create();

    //  Any string unlocks the component for the 1st 30-days.
    success = CkZip_UnlockComponent(zip,"Anything for 30-day trial");
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  This is the directory structure on the local filesystem
    //  from which we'll create .zip archives:
    //  The root directory is c:\temp\filesToZip
    // 
    //  We have these files:
    //  c:\temp\filesToZip\faxCover.doc
    //  c:\temp\filesToZip\exe\Setup.exe
    //  c:\temp\filesToZip\images\cheese.jpg
    //  c:\temp\filesToZip\images\dude.gif
    //  c:\temp\filesToZip\images\img3.gif
    //  c:\temp\filesToZip\images\img4.gif
    //  c:\temp\filesToZip\images\img5.gif
    //  c:\temp\filesToZip\images\scream.jpg
    //  c:\temp\filesToZip\images\imageInfo\scream.xml
    //  c:\temp\filesToZip\images\imageInfo\cheese.xml
    //  c:\temp\filesToZip\text\html\bonaireFishing.html
    //  c:\temp\filesToZip\text\html\upload.html
    //  c:\temp\filesToZip\text\txt\hello.txt
    //  c:\temp\filesToZip\text\txt\HelloWorld123.txt
    //  c:\temp\filesToZip\text\xml\hamlet.xml
    //  c:\temp\filesToZip\text\xml\pigs.xml

    //  There are three properties to help control the paths stored
    //  within a .zip:
    //  AppendFromDir
    //  PathPrefix
    //  DiscardPaths
    // 

    //  First we'll demonstrate AppendFromDir
    //  When a directory tree is appended via AppendFiles or
    //  AppendFilesEx, the AppendFromDir sets the base of the
    //  directory tree appended (if the file pattern contains a
    //  relative path, or no path at all).

    //  Clear the zip object.
    CkZip_NewZip(zip,"test1.zip");

    recurse = TRUE;

    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip");
    CkZip_AppendFiles(zip,"*.xml",recurse);

    //  The zip will contain:
    //  images\imageInfo\scream.xml
    //  images\imageInfo\cheese.xml
    //  text\xml\hamlet.xml
    //  text\xml\pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  Clear the zip object.
    CkZip_NewZip(zip,"test2.zip");

    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/images");
    CkZip_AppendFiles(zip,"*.xml",recurse);
    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/text");
    CkZip_AppendFiles(zip,"*.xml",recurse);

    //  The zip will contain:
    //  imageInfo\scream.xml
    //  imageInfo\cheese.xml
    //  xml\hamlet.xml
    //  xml\pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  The PathPrefix property adds an arbitrary path prefix to each
    //  file in the .zip.
    //  For example:

    //  Clear the zip object.
    CkZip_NewZip(zip,"test3.zip");

    CkZip_putPathPrefix(zip,"chilkat/");

    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/images");
    CkZip_AppendFiles(zip,"*.xml",recurse);
    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/text");
    CkZip_AppendFiles(zip,"*.xml",recurse);

    //  The zip will contain:
    //  chilkat\imageInfo\scream.xml
    //  chilkat\imageInfo\cheese.xml
    //  chilkat\xml\hamlet.xml
    //  chilkat\xml\pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  The DiscardPaths property removes the path from each file
    //  in the zip:
    //  For example:

    //  Clear the zip object.
    CkZip_NewZip(zip,"test4.zip");

    CkZip_putPathPrefix(zip,"");
    CkZip_putDiscardPaths(zip,TRUE);

    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/");
    CkZip_AppendFiles(zip,"*",recurse);

    //  The zip will contain:
    //  faxCover.doc
    //  Setup.exe
    //  cheese.jpg
    //  dude.gif
    //  img3.gif
    //  img4.gif
    //  img5.gif
    //  scream.jpg
    //  scream.xml
    //  cheese.xml
    //  bonaireFishing.html
    //  upload.html
    //  hello.txt
    //  HelloWorld123.txt
    //  hamlet.xml
    //  pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  You can combine PathPrefix with DiscardPaths:

    //  Clear the zip object.
    CkZip_NewZip(zip,"test5.zip");

    CkZip_putPathPrefix(zip,"chilkat/");
    CkZip_putDiscardPaths(zip,TRUE);

    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/");
    CkZip_AppendFiles(zip,"*",recurse);

    //  The zip will contain:
    //  chilkat\faxCover.doc
    //  chilkat\Setup.exe
    //  chilkat\cheese.jpg
    //  chilkat\dude.gif
    //  chilkat\img3.gif
    //  chilkat\img4.gif
    //  chilkat\img5.gif
    //  chilkat\scream.jpg
    //  chilkat\scream.xml
    //  chilkat\cheese.xml
    //  chilkat\bonaireFishing.html
    //  chilkat\upload.html
    //  chilkat\hello.txt
    //  chilkat\HelloWorld123.txt
    //  chilkat\hamlet.xml
    //  chilkat\pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }

    //  One last example -- combine DiscardPaths with PathPrefix
    //  with multiple calls to AppendFiles:

    //  Clear the zip object.
    CkZip_NewZip(zip,"test6.zip");

    CkZip_putDiscardPaths(zip,TRUE);
    CkZip_putAppendFromDir(zip,"c:/temp/filesToZip/");

    //  Get all .gif files:
    CkZip_putPathPrefix(zip,"gif/");
    CkZip_AppendFiles(zip,"*.gif",recurse);

    //  Get all .jpg files:
    CkZip_putPathPrefix(zip,"jpg/");
    CkZip_AppendFiles(zip,"*.jpg",recurse);

    //  Get all .xml files:
    CkZip_putPathPrefix(zip,"xml/");
    CkZip_AppendFiles(zip,"*.xml",recurse);

    //  The zip will contain:
    //  jpg\cheese.jpg
    //  gif\dude.gif
    //  gif\img3.gif
    //  gif\img4.gif
    //  gif\img5.gif
    //  jpg\scream.jpg
    //  xml\scream.xml
    //  xml\cheese.xml
    //  xml\hamlet.xml
    //  xml\pigs.xml

    success = CkZip_WriteZipAndClose(zip);
    if (success != TRUE) {
        printf("%s\n",CkZip_lastErrorText(zip));
        return;
    }


    CkZip_Dispose(zip);

    }

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2008 Chilkat Software, Inc. All Rights Reserved.