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
(Tcl) Controlling paths within a ZipHow to control the paths stored within a .zip.
load ./chilkat.dll # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. set zip [new_CkZip] # 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_NewZip $zip "test1.zip" set recurse 1 CkZip_put_AppendFromDir $zip "/temp/filesToZip" set success [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 set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } # Clear the zip object. set success [CkZip_NewZip $zip "test2.zip"] CkZip_put_AppendFromDir $zip "/temp/filesToZip/images" set success [CkZip_AppendFiles $zip "*.xml" $recurse] CkZip_put_AppendFromDir $zip "/temp/filesToZip/text" set success [CkZip_AppendFiles $zip "*.xml" $recurse] # The zip will contain: # imageInfo/scream.xml # imageInfo/cheese.xml # xml/hamlet.xml # xml/pigs.xml set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } # The PathPrefix property adds an arbitrary path prefix to each # file in the .zip. # For example: # Clear the zip object. set success [CkZip_NewZip $zip "test3.zip"] CkZip_put_PathPrefix $zip "chilkat/" CkZip_put_AppendFromDir $zip "/temp/filesToZip/images" set success [CkZip_AppendFiles $zip "*.xml" $recurse] CkZip_put_AppendFromDir $zip "/temp/filesToZip/text" set success [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 set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } # The DiscardPaths property removes the path from each file # in the zip: # For example: # Clear the zip object. set success [CkZip_NewZip $zip "test4.zip"] CkZip_put_PathPrefix $zip "" CkZip_put_DiscardPaths $zip 1 CkZip_put_AppendFromDir $zip "/temp/filesToZip/" set success [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 set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } # You can combine PathPrefix with DiscardPaths: # Clear the zip object. set success [CkZip_NewZip $zip "test5.zip"] CkZip_put_PathPrefix $zip "chilkat/" CkZip_put_DiscardPaths $zip 1 CkZip_put_AppendFromDir $zip "/temp/filesToZip/" set success [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 set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } # One last example -- combine DiscardPaths with PathPrefix # with multiple calls to AppendFiles: # Clear the zip object. set success [CkZip_NewZip $zip "test6.zip"] CkZip_put_DiscardPaths $zip 1 CkZip_put_AppendFromDir $zip "/temp/filesToZip/" # Get all .gif files: CkZip_put_PathPrefix $zip "gif/" set success [CkZip_AppendFiles $zip "*.gif" $recurse] # Get all .jpg files: CkZip_put_PathPrefix $zip "jpg/" set success [CkZip_AppendFiles $zip "*.jpg" $recurse] # Get all .xml files: CkZip_put_PathPrefix $zip "xml/" set success [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 set success [CkZip_WriteZipAndClose $zip] if {$success != 1} then { puts [CkZip_lastErrorText $zip] delete_CkZip $zip exit } delete_CkZip $zip |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.