Sample code for 30+ languages & platforms
PureBasic

Replace/Update a FIle in a .zip

See more Zip Examples

Demonstrates how to replace/update a file from a .zip. Note: This requires the entire .zip to be rewritten.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

    ; This requires the Chilkat Zip API to have been previously unlocked.
    ; See Unlock Chilkat Zip for sample code.

    ; First prepare a .zip and write it..
    zip.i = CkZip::ckCreate()
    If zip.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkZip::ckNewZip(zip,"qa_output/abc.zip")

    ; Add some files..
    charset.s = "utf-8"
    CkZip::ckAddString(zip,"a.txt","aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",charset)
    CkZip::ckAddString(zip,"b.txt","bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",charset)
    CkZip::ckAddString(zip,"c.txt","cccccccccccccccccccccccccccccccccccc",charset)

    ; Write to qa_output/abc.zip
    ; This .zip contains three files: a.txt, b.txt, and c.txt
    success = CkZip::ckWriteZipAndClose(zip)

    ; -------------------------------------------------------------------
    ; Open abc.zip, replace the content of the "b.txt" entry with something else, and re-write.
    zip2.i = CkZip::ckCreate()
    If zip2.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkZip::ckOpenZip(zip2,"qa_output/abc.zip")

    entry.i = CkZipEntry::ckCreate()
    If entry.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    If CkZip::ckEntryOf(zip2,"b.txt",entry) = 1
        CkZipEntry::ckReplaceString(entry,"This is the new content.  bbbbbbbbbbbbbbbbbbbbbb","utf-8")
    EndIf

    ; Write the modified .zip back to "abc.zip"
    success = CkZip::ckWriteZipAndClose(zip2)

    Debug "success."


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


    ProcedureReturn
EndProcedure