Я использую следующий код для извлечения файлов из архива SevenZIP. Он хорошо работает с однотомными архивами, но не работает с несколькими томами.Decompress multivolume SevenZip файл с JCLCompression
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 будет обрабатывать его автоматически?
Предположительно abbrevia делает лучшую работу? –
OT: Вы знаете об этой проблеме (http://stackoverflow.com/questions/27821277/why-are-the-delphi-zlib-and-zip-libraries-so-slow-under-64-bit)? Думаю, это может повлиять на аббревиатуру, если она использует запас Emba zlib. –
@DavidHeffernan Abbrevia не обрабатывает .7z архивы, так что _no_, но да, это поведение .zip расщепления работает и полностью автоматизировано. v5.0 улучшил это довольно немного. –