Sample code for 30+ languages & platforms
DataFlex

Unzip a Text File Entry into a StringBuilder Using ZipEntry.UnzipToSb

See more Zip Examples

This example demonstrates how to use the ZipEntry.UnzipToSb method to inflate a text file entry directly into a StringBuilder object.

The ZIP entry is uncompressed entirely in memory and appended to the StringBuilder without creating a temporary file on disk.

This is useful when:

  • Processing text files directly in memory
  • Avoiding temporary filesystem files
  • Reading configuration files, JSON, XML, CSV, or source code from ZIP archives
  • Automatically converting line endings while inflating the text

The srcCharset argument specifies how the uncompressed bytes should be interpreted, such as:

  • utf-8
  • utf-16
  • windows-1252

The lineEndingBehavior argument controls line-ending conversion:

  • 0 — Leave line endings unchanged
  • 1 — Convert all line endings to bare LF
  • 2 — Convert all line endings to CRLF

Suppose the ZIP archive contains:

config/settings.json

The example inflates the JSON file directly into a StringBuilder.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Variant vEntry
    Handle hoEntry
    Variant vSb
    Handle hoSb
    Integer iLineEndingBehavior
    String sSrcCharset
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatZip)) To hoZip
    If (Not(IsComObjectCreated(hoZip))) Begin
        Send CreateComObject of hoZip
    End

    // Open an existing ZIP archive.
    Get ComOpenZip Of hoZip "qa_data/zips/configFiles.zip" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Locate the JSON file entry within the ZIP archive.
    Get Create (RefClass(cComChilkatZipEntry)) To hoEntry
    If (Not(IsComObjectCreated(hoEntry))) Begin
        Send CreateComObject of hoEntry
    End

    Get pvComObject of hoEntry to vEntry
    Get ComEntryOf Of hoZip "config/settings.json" vEntry To iSuccess
    If (iSuccess = False) Begin
        Showln "ZIP entry not found."
        Send ComCloseZip To hoZip
        Procedure_Return
    End

    // ------------------------------------------------------------
    // Inflate the ZIP entry directly into a StringBuilder.
    // 
    // The uncompressed text is appended to the StringBuilder.
    // 
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
    If (Not(IsComObjectCreated(hoSb))) Begin
        Send CreateComObject of hoSb
    End

    // Leave line endings unchanged.
    Move 0 To iLineEndingBehavior

    // Interpret the uncompressed bytes as UTF-8 text.
    Move "utf-8" To sSrcCharset

    Get pvComObject of hoSb to vSb
    Get ComUnzipToSb Of hoEntry iLineEndingBehavior sSrcCharset vSb To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEntry To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Uncompressed text:"
    Showln ""
    Get ComGetAsString Of hoSb To sTemp1
    Showln sTemp1

    Send ComCloseZip To hoZip

    Showln "Done."


End_Procedure