Sample code for 30+ languages & platforms
PureBasic

Add Binary Data to a ZIP Using AddBd

See more Zip Examples

This example demonstrates how to use the AddBd method to add binary data from a BinData object as a file entry within a ZIP archive.

The data is created entirely in memory, added to the ZIP as data/binary.dat, and then written to disk.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkZip.pb"
IncludeFile "CkBinData.pb"

Procedure ChilkatExample()

    success.i = 0

    ; Create a new ZIP archive.
    zip.i = CkZip::ckCreate()
    If zip.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkZip::ckNewZip(zip,"inMemoryData.zip")
    If success = 0
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        ProcedureReturn
    EndIf

    ; Create a BinData object containing binary content.
    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Append some bytes as hexadecimal.
    ; The decoded bytes will become the contents of the ZIP entry.
    success = CkBinData::ckAppendEncoded(bd,"000102030405060708090A0B0C0D0E0F","hex")
    If success = 0
        Debug CkBinData::ckLastErrorText(bd)
        CkZip::ckDispose(zip)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    ; Add the BinData contents as a file entry within the ZIP.
    ; The file will be stored as "data/binary.dat" inside the ZIP archive.
    success = CkZip::ckAddBd(zip,"data/binary.dat",bd)
    If success = 0
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    ; Write the ZIP archive to disk and close it.
    success = CkZip::ckWriteZipAndClose(zip)
    If success = 0
        Debug CkZip::ckLastErrorText(zip)
        CkZip::ckDispose(zip)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    Debug "ZIP archive created successfully."


    CkZip::ckDispose(zip)
    CkBinData::ckDispose(bd)


    ProcedureReturn
EndProcedure