Sample code for 30+ languages & platforms
DataFlex

Exclude Multiple Directories When Adding Files to a ZIP

See more Zip Examples

This example demonstrates how to use the ExcludeDir method to exclude specific directory names when recursively adding files to a ZIP archive.

The ExcludeDir method excludes directories by name. Any directory matching an excluded name is skipped entirely, including all files and subdirectories beneath it.

This is useful for excluding directories such as:

  • .git
  • node_modules
  • bin
  • obj
  • Temporary or cache directories

Call ExcludeDir once for each directory name to exclude.

Suppose the local filesystem contains:

c:/project/src/main.cpp
c:/project/src/util.cpp
c:/project/bin/app.exe
c:/project/obj/main.obj
c:/project/.git/config
c:/project/node_modules/library/index.js

After excluding bin, obj, .git, and node_modules, only the files beneath src are added to the ZIP archive.

The resulting ZIP archive contains:

project/src/main.cpp
project/src/util.cpp

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoZip
    Boolean iRecurse
    Boolean iSaveExtraPath
    Boolean iArchiveOnly
    Boolean iIncludeHidden
    Boolean iIncludeSystem
    String sTemp1

    Move False To iSuccess

    Move False To iSuccess

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

    Get ComNewZip Of hoZip "project.zip" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Exclude several directory names.
    // 
    // Any directory matching one of these names will be skipped
    // during recursive file appending.
    Send ComExcludeDir To hoZip "bin"
    Send ComExcludeDir To hoZip "obj"
    Send ComExcludeDir To hoZip ".git"
    Send ComExcludeDir To hoZip "node_modules"

    // Recursively append all files beneath c:/project.
    // 
    // Because saveExtraPath = True, the ZIP paths will
    // include "project/" as the leading directory.
    Move True To iRecurse
    Move True To iSaveExtraPath
    Move False To iArchiveOnly
    Move True To iIncludeHidden
    Move False To iIncludeSystem

    Get ComAppendFilesEx Of hoZip "c:/project" iRecurse iSaveExtraPath iArchiveOnly iIncludeHidden iIncludeSystem To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Write the ZIP archive.
    Get ComWriteZipAndClose Of hoZip To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoZip To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "ZIP archive created successfully."


End_Procedure