MFC Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

MFC 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

// Needs #include <CkZip.h>

    CkString strOut;

    CkZip zip;

    bool success;

    //  Any string unlocks the component for the 1st 30-days.
    success = zip.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        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.
    zip.NewZip("test1.zip");

    bool recurse;
    recurse = true;

    zip.put_AppendFromDir("c:/temp/filesToZip");
    zip.AppendFiles("*.xml",recurse);

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

    success = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  Clear the zip object.
    zip.NewZip("test2.zip");

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

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

    success = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

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

    //  Clear the zip object.
    zip.NewZip("test3.zip");

    zip.put_PathPrefix("chilkat/");

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

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

    success = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

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

    //  Clear the zip object.
    zip.NewZip("test4.zip");

    zip.put_PathPrefix("");
    zip.put_DiscardPaths(true);

    zip.put_AppendFromDir("c:/temp/filesToZip/");
    zip.AppendFiles("*",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 = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  You can combine PathPrefix with DiscardPaths:

    //  Clear the zip object.
    zip.NewZip("test5.zip");

    zip.put_PathPrefix("chilkat/");
    zip.put_DiscardPaths(true);

    zip.put_AppendFromDir("c:/temp/filesToZip/");
    zip.AppendFiles("*",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 = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

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

    //  Clear the zip object.
    zip.NewZip("test6.zip");

    zip.put_DiscardPaths(true);
    zip.put_AppendFromDir("c:/temp/filesToZip/");

    //  Get all .gif files:
    zip.put_PathPrefix("gif/");
    zip.AppendFiles("*.gif",recurse);

    //  Get all .jpg files:
    zip.put_PathPrefix("jpg/");
    zip.AppendFiles("*.jpg",recurse);

    //  Get all .xml files:
    zip.put_PathPrefix("xml/");
    zip.AppendFiles("*.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 = zip.WriteZipAndClose();
    if (success != true) {
        strOut.append(zip.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }


    SetDlgItemText(IDC_EDIT1,strOut.getUnicode());

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

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