Sample code for 30+ languages & platforms
PureBasic

Modify Name of File Stored within Zip when Creating a .zip

See more Zip Examples

Demonstrates how to create a zip where the filename within the .zip is different than the filename that was added from the filesystem.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkZip.pb"
IncludeFile "CkZipEntry.pb"

Procedure ChilkatExample()

    success.i = 0

    ; 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

    ; Intialize the zip object by calling NewZip.
    success = CkZip::ckNewZip(zip,"myZip.zip")

    ; Add a reference to a file on disk to the zip object.
    ; (When appending files to a zip, the files are not actually
    ; read into memory.  References to the file(s) are added.
    ; When WriteZip is called, the referenced files are streamed in
    ; and compressed to the .zip.)
    saveExtraPath.i = 0
    success = CkZip::ckAddFile(zip,"/temp/a/hamlet.xml",saveExtraPath)
    If success = 0
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    ; The zip object references a single file.
    ; Retrieve the entry object...
    entry.i = CkZipEntry::ckCreate()
    If entry.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkZip::ckEntryAt(zip,0,entry)

    ; Set the entry's filename to anything you want:
    CkZipEntry::setCkFileName(entry, "somethingElse.xml")

    ; Note: Internally, the zip component retains the name of
    ; the file referenced.  The current setting of the zip entry's
    ; FileName property is stored in the .zip when writing.

    ; The zip written here will contain somethingElse.xml
    success = CkZip::ckWriteZipAndClose(zip)
    If success <> 1
        Debug CkZip::ckLastErrorText(zip)
    Else
        Debug "Zip created!"
    EndIf



    CkZip::ckDispose(zip)
    CkZipEntry::ckDispose(entry)


    ProcedureReturn
EndProcedure