关于zlib的问题?(100分)

  • 主题发起人 主题发起人 whynozg
  • 开始时间 开始时间
W

whynozg

Unregistered / Unconfirmed
GUEST, unregistred user!
我压缩成功一个文件 1.zip
但解压文件1.zip 出现错误
怎样解压一个文件?
比如把1.zip解压为1.txt
 
Zlib只能压缩解压缩流格式。
如果想要操作文件,先要把文件读入流中。
 
procedure UnCompressData(const CompressedStream: TFileStream;
 var SDestStream: TMemoryStream);
var
 SourceStream: TDecompressionStream;
 DestStream: TMemoryStream;
 Buffer: PChar;
 Count: Integer;
Begin
 //从被压缩的流中读出原始的尺寸
 CompressedStream.ReadBuffer(Count, SizeOf(Count));
 //根据尺寸大小为将要读入的原始流分配内存块
 GetMem(Buffer, Count);
 DestStream := TMemoryStream.Create;
 SourceStream := TDecompressionStream.Create(CompressedStream);
 Try
  //将被压缩的流解压缩,然后存入 Buffer内存块中
  SourceStream.ReadBuffer(Buffer^, Count);
  //将原始流保存至 DestStream流中
  DestStream.WriteBuffer(Buffer^, Count);
  DestStream.Position := 0;//复位流指针
  //从 DestStream流中载入流
  sDestStream.LoadFromStream(DestStream);
 finally
  FreeMem(Buffer);
  DestStream.Free;
 end;
end;
 
多人接受答案了。
 
 //从被压缩的流中读出原始的尺寸
 CompressedStream.ReadBuffer(Count, SizeOf(Count));
这句不对吧?跟踪到这句执行完后Count=124771254,其实Count大约只有112000左右
 
后退
顶部