我使用以下代码从SevenZIP压缩包中提取文件。它可以很好地与单卷压缩包,但无法与多卷。
procedure TMyClass.ExtractArchive(AInputFile:String;AOutputDir:String);
var
LArchive:TJcl7zDecompressArchive;
begin
LArchive:=TJcl7zDecompressArchive.Create(AInputFile);
try
LArchive.OnProgress:=ExtractProgress;
LArchive.ListFiles();
try
LArchive.ExtractAll(AOutputDir);
except
on e:Exception do
LogError(e);
end;
finally
LArchive.Free();
end;
end;
看来,卷的SevenZip只是文件分裂成两半(在相反的RAR和ZIP压缩文件)。我必须手动准备组合流(所有卷作为一个)全部由我自己?或JCL将以某种方式自动处理它?
2条答案
按热度按时间0mkxixxg1#
Jcl 7zip类不能很好地处理阅读现有的分割存档。它有回调来获取卷名,但如果它们不在单独的可移动驱动器上,最简单的方法是在打开它之前手动添加所有卷:
yk9xbfzb2#
可以使用multivolume 7zip和jcl压缩拆分大文件,然后无法使用上述方法解压缩拆分版本。