gpt4 book ai didi

Delphi XE2 .Z Unix 压缩文件库

转载 作者:行者123 更新时间:2023-12-03 15:58:30 24 4
gpt4 key购买 nike

我需要管理.Z(Unix压缩)文件,主要是解压缩功能。执行此操作的最佳库是什么?最好避免 Dll(如 7z.dll)。编辑:今天我有一个与 7z.dll 连接的 JCL 压缩库的解决方案。我只是想寻找一个更轻、更简单的解决方案,因为我只需要“.Z”解压功能。

最佳答案

要解压缩 .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 header 的选项:

LUnZip := TZDecompressionStream.Create(LInput, 15+16); // 16 = read as gzip header !

关于Delphi XE2 .Z Unix 压缩文件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10911347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com