我需要管理.Z(Unix压缩)文件,主要是解压缩功能。 什么是最好的图书馆? 首选避免使用Dll(如7z.dll)。 编辑:今天我有一个解决方案,JCL压缩库连接到7z.dll。 我只是想寻找一个更轻的&简单的解决方案因为我只需要'.Z'去折叠函数。
答案 0 :(得分: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 !