所谓的压缩,必须要有一定的数据量压缩才有效,数据量少的时候是无法压缩的。举例来说,winrar工具的压缩效果应该还可以,可是如果我新建一个文本文件,内容只有2个字节,为"AA",我对它进行压缩,压缩后的文件大小却是102字节。你的信息量太少,压缩过程中附带的压缩信息,会导致压缩后的内容远大于压缩前的内容。----------如果你数据比较多,可以先将数据写入一个流,然后调用zlib.TCompressionStream类进行压缩,类似案例:Procedure ZipFile(Source, OutFileName:String);//文件压缩var F:TCompressionStream
FSource,Fzip:TFileStream
i:integer;begin FSource:=TFileStream.Create(Source,fmOpenRead)
i:= FSource.Size
FZip:=TFileStream.Create(OutFileName,fmCreate)
F:=TCompressionStream.Create(clDefault,Fzip)
Try F.CopyFrom(FSource,0)
Finally F.Free
FSource.Free
End
Fzip.Write(i,sizeof(i))
Fzip.Free;end;procedure UnZipFIle(Source,OutFileName:String)
//文件解压var F:TDecompressionStream
FSource,FUnzip:TFileStream
Buffer: PChar
i:integer;begin if not FileExists(Source) Then Exit
DeleteTmpFile
FSource:=TFileStream.Create(Source,fmOpenRead)
FUnzip:=TFileStream.Create(OutFileName,fmCreate)
FSource.Position:=FSource.Size-Sizeof(integer)
FSource.Read(i,sizeof(i))
FSource.Position:=0
Try F:=TDecompressionStream.Create(FSource)
Finally End
GetMem(Buffer,i)
F.Read(Buffer^,i)
FUnzip.WriteBuffer(Buffer^,i)
FreeMem(Buffer)
F.Free
FSource.Free
FUnZip.Free;end;