Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Unicode C) Controlling paths within a ZipHow to control the paths stored within a .zip.
#include <C_CkZipW.h> void ChilkatSample(void) { HCkZipW zip; BOOL success; BOOL recurse; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. zip = CkZipW_Create(); // This is the directory structure on the local filesystem // from which we'll create .zip archives: // The root directory is /temp/filesToZip // // We have these files: // /temp/filesToZip/faxCover.doc // /temp/filesToZip/exe/Setup.exe // /temp/filesToZip/images/cheese.jpg // /temp/filesToZip/images/dude.gif // /temp/filesToZip/images/img3.gif // /temp/filesToZip/images/img4.gif // /temp/filesToZip/images/img5.gif // /temp/filesToZip/images/scream.jpg // /temp/filesToZip/images/imageInfo/scream.xml // /temp/filesToZip/images/imageInfo/cheese.xml // /temp/filesToZip/text/html/bonaireFishing.html // /temp/filesToZip/text/html/upload.html // /temp/filesToZip/text/txt/hello.txt // /temp/filesToZip/text/txt/HelloWorld123.txt // /temp/filesToZip/text/xml/hamlet.xml // /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. CkZipW_NewZip(zip,L"test1.zip"); recurse = TRUE; CkZipW_putAppendFromDir(zip,L"/temp/filesToZip"); success = CkZipW_AppendFiles(zip,L"*.xml",recurse); // The zip will contain: // images/imageInfo/scream.xml // images/imageInfo/cheese.xml // text/xml/hamlet.xml // text/xml/pigs.xml success = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } // Clear the zip object. success = CkZipW_NewZip(zip,L"test2.zip"); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/images"); success = CkZipW_AppendFiles(zip,L"*.xml",recurse); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/text"); success = CkZipW_AppendFiles(zip,L"*.xml",recurse); // The zip will contain: // imageInfo/scream.xml // imageInfo/cheese.xml // xml/hamlet.xml // xml/pigs.xml success = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } // The PathPrefix property adds an arbitrary path prefix to each // file in the .zip. // For example: // Clear the zip object. success = CkZipW_NewZip(zip,L"test3.zip"); CkZipW_putPathPrefix(zip,L"chilkat/"); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/images"); success = CkZipW_AppendFiles(zip,L"*.xml",recurse); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/text"); success = CkZipW_AppendFiles(zip,L"*.xml",recurse); // The zip will contain: // chilkat/imageInfo/scream.xml // chilkat/imageInfo/cheese.xml // chilkat/xml/hamlet.xml // chilkat/xml/pigs.xml success = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } // The DiscardPaths property removes the path from each file // in the zip: // For example: // Clear the zip object. success = CkZipW_NewZip(zip,L"test4.zip"); CkZipW_putPathPrefix(zip,L""); CkZipW_putDiscardPaths(zip,TRUE); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/"); success = CkZipW_AppendFiles(zip,L"*",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 = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } // You can combine PathPrefix with DiscardPaths: // Clear the zip object. success = CkZipW_NewZip(zip,L"test5.zip"); CkZipW_putPathPrefix(zip,L"chilkat/"); CkZipW_putDiscardPaths(zip,TRUE); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/"); success = CkZipW_AppendFiles(zip,L"*",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 = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } // One last example -- combine DiscardPaths with PathPrefix // with multiple calls to AppendFiles: // Clear the zip object. success = CkZipW_NewZip(zip,L"test6.zip"); CkZipW_putDiscardPaths(zip,TRUE); CkZipW_putAppendFromDir(zip,L"/temp/filesToZip/"); // Get all .gif files: CkZipW_putPathPrefix(zip,L"gif/"); success = CkZipW_AppendFiles(zip,L"*.gif",recurse); // Get all .jpg files: CkZipW_putPathPrefix(zip,L"jpg/"); success = CkZipW_AppendFiles(zip,L"*.jpg",recurse); // Get all .xml files: CkZipW_putPathPrefix(zip,L"xml/"); success = CkZipW_AppendFiles(zip,L"*.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 = CkZipW_WriteZipAndClose(zip); if (success != TRUE) { wprintf(L"%s\n",CkZipW_lastErrorText(zip)); CkZipW_Dispose(zip); return; } CkZipW_Dispose(zip); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.