Sample code for 30+ languages & platforms
Lazarus Pascal

Create Empty File and Directory Entries in a ZIP

See more Zip Examples

This example demonstrates how to use the AddEmpty method to create both empty directory entries and empty file entries within a ZIP archive.

The example creates:

  • A truly empty directory named emptyDir
  • An empty file named empty.txt located beneath the docs subdirectory

When the ZIP archive is extracted:

  • emptyDir will be created as an empty directory.
  • docs/empty.txt will be created as an empty file under the docs subdirectory.

It is not necessary to explicitly create the docs directory beforehand. The directory structure implied by the file path is created automatically when extracting.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Zip;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  zip: TZip;

begin
  success := False;

  zip := TZip.Create;

  success := zip.NewZip('emptyEntries.zip');
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  //  Add an empty directory entry named "emptyDir".
  success := zip.AddEmpty(True,'emptyDir');
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  //  Add an empty file entry named "docs/empty.txt".
  success := zip.AddEmpty(False,'docs/empty.txt');
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  //  Write the ZIP archive to disk and close it.
  success := zip.WriteZipAndClose();
  if (success = False) then
    begin
      WriteLn(zip.LastErrorText);
      Exit;
    end;

  WriteLn('ZIP archive created successfully.');


  zip.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.