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');