Sample code for 30+ languages & platforms
DataFlex

Compress a File to Gzip in Memory using BinData

See more Gzip Examples

This example demonstrates how to use the CompressFileBd method to compress a file into Gzip format and store the compressed result in memory using a BinData object.

The input file is read from disk and compressed, with the resulting .gz data placed in the BinData instance. This allows your application to work with the compressed data entirely in memory before deciding what to do next.

Finally, the example shows how the in-memory Gzip data can be written to a file, which is useful for saving or distributing the compressed output.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoGzip
    Variant vBd
    Handle hoBd
    String sFilePath
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example demonstrates how to compress a file into Gzip format
    // and store the compressed result in a BinData object (in memory).

    Get Create (RefClass(cComChilkatGzip)) To hoGzip
    If (Not(IsComObjectCreated(hoGzip))) Begin
        Send CreateComObject of hoGzip
    End
    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End

    // The file to be compressed:
    Move "example.txt" To sFilePath

    // Compress the file into the BinData object:
    Get pvComObject of hoBd to vBd
    Get ComCompressFileBd Of hoGzip sFilePath vBd To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoGzip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // At this point, "bd" contains the Gzip-compressed data in memory.
    Showln "Compression successful."
    Get ComNumBytes Of hoBd To iTemp1
    Showln "Compressed size (bytes): " iTemp1

    // (Optional) Save the in-memory Gzip data to a file:
    Get ComWriteFile Of hoBd "example.txt.gz" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoBd To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Gzip file written to example.txt.gz"


End_Procedure