用DELPHI实现文件加密压缩(2) 2.2、关键技术的讲述(一)ZLIB1)、基类 TCustomZlibStream:是类TCompressionStream和TDecompressionStream 类的基类,它主要有一个属性: OnProgress,在类进行压缩或解压缩的过程中会发生这个的事件 。格式:Procedure OnProgress (Sender: TObject); dynamic;2)、压缩类TCompressionStream:除了继承了基类的OnProgress 属性外,又增加了一个属性:CompressionRate,它的定义如下:Property CompressionRate: Single read GetCompressionRate;通过这个属性,可以得到压缩比。它的几个重要的方法定义如下:ConstrUCtor TCompressionStream.Create (CompressionLevel: TCompressionLevel; Dest: TStream);其中:TcompressionLevel(压缩类型),它由如下几个定义:1)、 clNone :不进行数据压缩;2)、 clFastest:进行快速压缩,牺牲压缩效率;3)、 clDefault:进行正常压缩;4)、 clMax: 进行最大化压缩,牺牲速度;Dest:目的流,用于存放压缩过的数据。Function TCompressionStream.Write (const Buffer; Count: Longint): Longint;其中:Buffer:需要压缩的数据;Count: 需要压缩的数据的字节数;函数返回写入流的字节数。注意:压缩类TCompressionStream的数据只能是写入的,如果试图从其内部读取数据,将发生一个"Error "异常。需要压缩的数据通过方法 Write写入流中,在写入的过程中就被压缩,并保存在由构造函数提供的内存流(TmemoryStream)中,同时触发 OnProcess 事件。3)、 解压缩类 TDecompressionStream :和压缩类TcompressionStream相反,它的数据是只能读出的,如果试图往其内部写数据,将发生一个"Error "异常。它的几个重要方法定义如下:构造函数:ConstrUCtor Create(Source: TStream);其中:Source 是保存着压缩数据的流;Function Read(var Buffer; Count: Longint): Longint;数据读出函数,Buffer: 存数据缓冲区;Count: 缓冲区的大小;函数返回读出的字节数。数据在读出的过程中,数据被解压缩,并触发 OnProcess 事件。(二)流在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。TStream类中定义的属性如下:1)、Size:此属性以字节返回流中数据大小。2)、Position:此属性控制流中存取指针的位置。Tstream中定义的虚方法有四个:1)、Read:此方法实现将数据从流中读出,返回值为实际读出的字节数,它可以小于或等于指定的值。2)、Write:此方法实现将数据写入流中,返回值为实际写入流中的字节数。