procedure TForm1.Button3Click(Sender: TObject); var beforeMS,afterMS:TMemoryStream; {beforeMS 是要压缩的流; afterMS 是接收压缩后文件的流} cS:TCompressionStream; {定义压缩流} num:Integer; {原始文件大小} begin {第一步: 调入要压缩的文件, 并获取大小} beforeMS:=TMemoryStream.Create; beforeMS.LoadFromFile('F:\cc.doc'); num:=beforeMS.Size; {第二步: 建立接收的流, 并先写入原始文件大小} afterMS:=TMemoryStream.Create; afterMS.Write(num,SizeOf(num)); {第三步: 压缩} cS:=TCompressionStream.Create(clMax,afterMS); {参数1是压缩比; 参数2是接收流} beforeMS.SaveToStream(cS); {传入要压缩的数据} cS.Free; {压缩流 Free 后才真正完成压缩, 所以提前 Free} {第四步: 保存} afterMS.SaveToFile('F:\cc.press'); {第五步: 释放} beforeMS.Free; afterMS.Free; end; procedure TForm1.Button4Click(Sender: TObject); var souMS,desMS:TMemoryStream; dS:TDecompressionStream; num:Integer; begin {第一步: 准要解压的文件} souMS:=TMemoryStream.Create; souMS.LoadFromFile('F:\cc.press'); {第二步: 读出文件压缩前的大小} souMS.Position := 0; souMS.ReadBuffer(num,SizeOf(num)); {第三步: 准备好要接收的流, 并设置需要的大小} desMS:=TMemoryStream.Create; desMS.SetSize(num); {第四步: 解压} dS:=TDecompressionStream.Create(souMS); {参数是要解压的流} {第五步: 把解压后的数据读出存放到已准备好接收的流} dS.Read(desMS.Memory^,num); dS.Free; {第六步: 保存} desMS.SaveToFile('F:\jy.doc'); desMS.Free; souMS.Free; end;