Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
Controlling filepaths within a ZipHow to control the filepaths stored within a .zip.
#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.