DelphiでZIPファイルを作成するには

TZipFileクラス

ZIPファイルを作成するには、System.ZipユニットのTZipFileクラスを使用します。

uses
   System.Zip;

ファイルを開く

Openメソッドで作成するZIPファイルのファイル名を指定します。

var
  ZipFile: TZipFile;

begin
  ZipFile := TZipFile.Create;

  //ZIPファイルを書き込むために開く
  ZipFile.Open('C:\test\sample.zip', zmWrite);

ZIPファイルにファイルを追加する

AddメソッドでZIPファイルにファイルを追加します。

第1引数に追加するファイルのファイル名、第2引数にZIPファイル内のファイル名を指定します。

  //ZIPファイルにファイルを追加する
  ZipFile.Add('C:\source\file1.txt', 'file1.txt');
  ZipFile.Add('C:\source\file2.txt', 'dir\file2.txt');

第1引数にバイト配列を指定して、バイト列を直接保存することもできます。

var
  …
  Data: TBytes;

begin
  …
  Data := TEncoding.UTF8.GetBytes('ZIPファイルのテスト');
  ZipFile.Add(Data, 'dir\file3.txt');

第1引数にTStreamを指定して、TStreamのデータを保存することもできます。

var
  …
  Data: TFileStream;
begin
  …
  Data := TFileStream.Create('C:\source\01.gif', fmOpenRead);
  ZipFile.Add(Data, 'test.gif');

ZIPファイルを書き込む

CloseメソッドでTZipFileを閉じて、ファイルに書き込みます。

  ZipFile.Close;

サンプルコード

uses
   System.Zip;

var
  ZipFile: TZipFile;

begin
  ZipFile := TZipFile.Create;

  //ZIPファイルを書き込むために開く
  ZipFile.Open('C:\test\sample.zip', zmWrite);

  //ZIPファイルにファイルを追加する
  ZipFile.Add('C:\source\file1.txt', 'file1.txt');
  ZipFile.Add('C:\source\file2.txt', 'dir\file2.txt');

  //ファイルを書き込む
  ZipFile.Close;

TZipFile.ZipDirectoryContentsでディレクトリを圧縮する

TZipFile.ZipDirectoryContents関数は、ディレクトリの内容を圧縮します。

第1引数にZIPファイルのファイル名、第2引数に圧縮するディレクトリのパスを指定します。

uses
  System.Zip;
begin
  TZipFile.ZipDirectoryContents('C:\test\sample.zip', 'C:\source');

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください