続・続・ZIP で圧縮 / 解凍したい (Delphi XE2 以降)

 今回は、XE2 で追加された System.ZipTZipFile クラスを使ってみます。

unit ZipFiles;

interface

uses
  System.SysUtils, System.Zip;

  procedure CompressZipFile(const aFileName, aSrcDir: TFileName);
  procedure DecompressZipFile(const aFileName, aDstDir: TFileName);

implementation

procedure CompressZipFile(const aFileName, aSrcDir: TFileName);
begin
  TZipFile.ZipDirectoryContents(aFileName, IncludeTrailingPathDelimiter(aSrcDir));
end;

procedure DecompressZipFile(const aFileName, aDstDir: TFileName);
begin
  TZipFile.ExtractZipFile(aFileName, IncludeTrailingPathDelimiter(aDstDir));
end;

end.

 関数化するまでもない位、とても簡単ですね。ZipDirectoryContents() / ExtractZipFile() はクラスメソッドなのでサンプルのような単純な用途であれば Create する事なしに使う事ができます。

 UTF-8 Zip には対応しているようですが、残念ながら暗号化 Zip には対応していないようです。

Shift_JIS なファイル名が格納されている ZIP ファイルを扱うには?

 System.Zip.TZipFile を改変すれば、Shift_JIS ファイル名の ZIP や、Mac OS X の Finder で作られた ZIP が扱えます。

 XE2 と XE3 で改変箇所が異なります。

 改変内容の詳細については System.Zip.TZipFile のアレをちょっといじったのをちょっといじると? (XE3) - 再掲載 をお読みください。

See Also:


 BACK