Jus*_*ade 8 delphi 7zip jedi-code-library
我之前使用过TJcl7zCompressArchive/TJcl7zDecompressArchive进行存档操作.
现在我想直接压缩/解压缩内存流而无需文件操作.但是,当看到在网上搜索JCL演示的示例时,我找不到使用该lib的方法.我确实找到了其他工具,但压缩比似乎不如7zip.
任何人都可以提供一些指示或示例代码,说明如何实现这一目标 非常感谢!
小智 11
我使用JCL包装器压缩GZIP流 - 不确定它是否可以简单地使用TJcl7ziCompresspArchive.要压缩流,我使用以下内容:
procedure _CompressStreamGZIP( const ASourceStream, ADestinationStream: TStream );
var
LArchive : TJclCompressArchive;
begin
ADestinationStream.Position := 0;
ASourceStream.Position := 0;
LArchive := TJclGZipCompressArchive.Create( ADestinationStream, 0, False );
try
LArchive.AddFile( '..\Stream.0', ASourceStream, false );
LArchive.Compress();
finally
if ( Assigned( LArchive ) ) then FreeAndNil( LArchive );
end;
end;
Run Code Online (Sandbox Code Playgroud)
要解压缩流:
procedure _DecompressStreamGZIP( const ASourceStream, ADestinationStream : TStream );
var
LArchive : TJclDecompressArchive;
begin
ADestinationStream.Position := 0;
ASourceStream.Position := 0;
LArchive := TJclGZipDecompressArchive.Create( ASourceStream, 0, false );
try
LArchive.ListFiles();
LArchive.Items[0].Stream := ADestinationStream;
LArchive.Items[0].OwnsStream := false;
LArchive.Items[0].Selected := True;
LArchive.ExtractSelected();
finally
if ( Assigned( LArchive ) ) then FreeAndNil( LArchive );
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3672 次 |
| 最近记录: |