Ruby Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Ruby
Examples

Quick Start
Ruby Unicode
Ruby Byte Array
Ruby Certs
Ruby Email
Ruby Encryption
Ruby FTP
HTML-to-XML
Ruby HTTP
Ruby IMAP
Ruby MHT
Ruby MIME
Ruby S/MIME
Ruby Signatures
Ruby RSA
Ruby Socket
Ruby Spider
Ruby Tar
Ruby Upload
Ruby XML
Ruby XMP
Ruby Zip

More Examples...
String
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
DH Key Exchange
DSA

Unreleased...
LZW
Bz2
Icon

 

 

 

 

 

 

 

Controlling filepaths within a Zip

How to control the filepaths stored within a .zip.

Download Chilkat Ruby Library

require 'chilkat'

zip = Chilkat::CkZip.new()

#  Any string unlocks the component for the 1st 30-days.
success = zip.UnlockComponent("Anything for 30-day trial")
if (success != true)
    print zip.lastErrorText() + "\n"
    exit
end

#  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")

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)
    print zip.lastErrorText() + "\n"
    exit
end

#  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)
    print zip.lastErrorText() + "\n"
    exit
end

#  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)
    print zip.lastErrorText() + "\n"
    exit
end

#  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)
    print zip.lastErrorText() + "\n"
    exit
end

#  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)
    print zip.lastErrorText() + "\n"
    exit
end

#  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)
    print zip.lastErrorText() + "\n"
    exit
end

 

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

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