.Z (Unix 圧縮) ファイル、主に dezip 機能を管理する必要があります。これを行うのに最適なライブラリは何ですか? Dll (7z.dll など) を避けることをお勧めします。編集:今日、7z.dllにインターフェースされたJCL圧縮ライブラリを使用したソリューションがあります。「.Z」解凍機能が必要なだけなので、もっと軽くてシンプルなソリューションを探したかっただけです。
2004 次
1 に答える
1
.Z ファイルを解凍するには、Delphi XE2 の組み込み ZLib ライブラリを使用するだけです。
uses ...,ZLib;
procedure UnpackFiles;
var
LList: TStringDynArray;
I: Integer;
FileName: String;
DestFileName: String;
LUnZip: TZDecompressionStream;
LInput, LOutput: TFileStream;
begin
LList:= TDirectory.GetFiles(ImportDir, '*.gz');
for i:= 0 to Length(LList)-1 do
begin
FileName:= LowerCase(LList[i]);
DestFileName:= ChangeFileExt(FileName, '.csv');
{ Create the Input, Output, and Decompressed streams. }
LInput := TFileStream.Create(FileName, fmOpenRead);
LOutput := TFileStream.Create(DestFileName, fmCreate);
LUnZip := TZDecompressionStream.Create(LInput, 15+16); // 16 = read as gzip header !
Log(Format('create uncompressed file %s', [DestFileName]));
{ Decompress data. }
LOutput.CopyFrom(LUnZip, 0);
{ Free the streams. }
LUnZip.Free;
LInput.Free;
LOutput.Free;
Log(Format('Delete compressed file %s', [FileName]));
DeleteFile(FileName);
end;
end;
重要な部分は、gzip ヘッダーを読み取るオプションを設定することです。
LUnZip := TZDecompressionStream.Create(LInput, 15+16); // 16 = read as gzip header !
于 2012-08-15T05:47:06.223 に答える