Sample code for 30+ languages & platforms
Delphi ActiveX

Compress a File to Gzip with Custom Metadata

See more Gzip Examples

This example demonstrates how to use the CompressFile method to create a Gzip (.gz) file while customizing the metadata embedded in the Gzip header.

Before compression, several properties are set:

  • Comment: Adds a descriptive comment to the Gzip file.
  • Filename: Specifies the filename to embed in the Gzip data, which may be used by extraction tools as the default output name.
  • CompressionLevel: Controls the tradeoff between compression ratio and speed (set to maximum in this example).
  • LastModStr: Sets the last-modified timestamp using an RFC 822 formatted date string.

After setting these properties, the input file is compressed and written to a .gz file. This approach allows you to embed meaningful metadata along with the compressed data.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
gzip: TChilkatGzip;
inputFile: WideString;
outputFile: WideString;

begin
success := 0;

// This example demonstrates how to compress a file to Gzip format
// while setting custom metadata such as comment, filename,
// compression level, and last-modified date.

gzip := TChilkatGzip.Create(Self);

// Set custom Gzip properties:
gzip.Comment := 'Example Gzip file created with Chilkat';
gzip.Filename := 'custom_name.txt';
gzip.CompressionLevel := 9;
gzip.LastModStr := 'Wed, 1 Apr 2025 12:45:26 -0500';

// The file to be compressed:
inputFile := 'example.txt';
outputFile := 'example.txt.gz';

// Compress the file:
success := gzip.CompressFile(inputFile,outputFile);
if (success = 0) then
  begin
    Memo1.Lines.Add(gzip.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Compression successful.');
Memo1.Lines.Add('Gzip file created: ' + outputFile);
end;