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
(PureBasic) Controlling paths within a ZipHow to control the paths stored within a .zip.
IncludeFile "CkZip.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. zip.i = CkZip::ckCreate() If zip.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; 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. CkZip::ckNewZip(zip,"test1.zip") recurse.i = 1 CkZip::setCkAppendFromDir(zip, "/temp/filesToZip") success = CkZip::ckAppendFiles(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::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf ; Clear the zip object. success = CkZip::ckNewZip(zip,"test2.zip") CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/images") success = CkZip::ckAppendFiles(zip,"*.xml",recurse) CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/text") success = CkZip::ckAppendFiles(zip,"*.xml",recurse) ; The zip will contain: ; imageInfo/scream.xml ; imageInfo/cheese.xml ; xml/hamlet.xml ; xml/pigs.xml success = CkZip::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf ; The PathPrefix property adds an arbitrary path prefix to each ; file in the .zip. ; For example: ; Clear the zip object. success = CkZip::ckNewZip(zip,"test3.zip") CkZip::setCkPathPrefix(zip, "chilkat/") CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/images") success = CkZip::ckAppendFiles(zip,"*.xml",recurse) CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/text") success = CkZip::ckAppendFiles(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::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf ; The DiscardPaths property removes the path from each file ; in the zip: ; For example: ; Clear the zip object. success = CkZip::ckNewZip(zip,"test4.zip") CkZip::setCkPathPrefix(zip, "") CkZip::setCkDiscardPaths(zip, 1) CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/") success = CkZip::ckAppendFiles(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::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf ; You can combine PathPrefix with DiscardPaths: ; Clear the zip object. success = CkZip::ckNewZip(zip,"test5.zip") CkZip::setCkPathPrefix(zip, "chilkat/") CkZip::setCkDiscardPaths(zip, 1) CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/") success = CkZip::ckAppendFiles(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::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf ; One last example -- combine DiscardPaths with PathPrefix ; with multiple calls to AppendFiles: ; Clear the zip object. success = CkZip::ckNewZip(zip,"test6.zip") CkZip::setCkDiscardPaths(zip, 1) CkZip::setCkAppendFromDir(zip, "/temp/filesToZip/") ; Get all .gif files: CkZip::setCkPathPrefix(zip, "gif/") success = CkZip::ckAppendFiles(zip,"*.gif",recurse) ; Get all .jpg files: CkZip::setCkPathPrefix(zip, "jpg/") success = CkZip::ckAppendFiles(zip,"*.jpg",recurse) ; Get all .xml files: CkZip::setCkPathPrefix(zip, "xml/") success = CkZip::ckAppendFiles(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::ckWriteZipAndClose(zip) If success <> 1 Debug CkZip::ckLastErrorText(zip) CkZip::ckDispose(zip) ProcedureReturn EndIf CkZip::ckDispose(zip) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.