批量计算机文件的遍历性压缩和解压缩方法 【技术领域】
本发明所属的领域是信息技术。
背景技术
批量计算机文件常常需要进行遍历性压缩处理。这些文件中可能既有需要压缩的文件,如bitmap文件等,也有不需要压缩的文件,如Mp3文件等。
传统的压缩方法,如Zip压缩,它们不对其中的文件类型进行识别和区分,对所有的文件都一律采用同一种无损压缩编码进行压缩。采用这种方法,实现起来比较简单,但它既不能使需要压缩的文件获得充分的压缩效果,也不能使不需要压缩的文件不予压缩,以避免浪费处理时间。
本公司的发明专利“计算机文件的智能压缩和解压缩方法”(中国专利号ZL:01124158.6,美国专利号:US6,460,044BI),虽然描述了对于人工选择的一组拟压缩/解压缩的计算机文件,如何更有效的进行压缩/解压缩的方法,但未描述对于任意一批计算机文件应如何自动地进行遍历性压缩/解压缩处理。
【发明内容】
本发明是对上述发明的改进。本发明的目的是为批量计算机文件进行遍历性压缩/解压缩处理提供一种自动的和高效的压缩/解压缩方法。本发明也可用于对任意一个计算机文件自动进行适宜的压缩/解压缩处理。
【附图说明】
本发明可用软件、硬件或软硬件相结合的方式来实现。其流程框图如下所示。
图1:压缩操作流程框图A
图2:压缩操作流程框图B
图3:压缩操作流程框图C
图4:解压缩操作流程框图。
【具体实施方式】
本发明的压缩操作,系统中需有这样设定地两组文件类型:
1.A组文件类型,即不需要进行压缩的文件类型。它们可以是已进行充分压缩的文件,例如Mp3文件;它们也可以是不宜进行压缩的文件,例如存在计算机中需频繁进行检索的文件等。
由于这些文件不需进行压缩,其文件格式可以是已知的,也可以是未知的,并且这些文件类型可仅用文件扩展名列表来表示。
2.B组文件类型,即需要用特定的压缩算法进行压缩的文件类型。这些文件类型的文件格式需是已知的,并且它们的数据信息,或是适于采用有损压缩,如音频信息,视频信息;或是具有比系统采用的通用无损编码更有效的无损压缩算法,如黑白图象。
这些文件类型需由两个列表来表示:一个是文件扩展名列表;另一个是与其相对应的文件控制信息列表。
A.在压缩方起始端的一批计算机文件是由用户指定的,其它操作将由计算机系统按照图1的流程框图自动进行。从用户指定的一批计算机文件中任取一个文件,然后判定它是否属于A组文件类型,亦即它是否需要进行压缩的文件。为此系统需验证该文件的文件扩展名是否包括在A组文件的文件扩展名列表中。如果是,则直接送至图一中G框,即送至BCF文件包中。如果不是,则进入下一步操作:
B.验证它是否属于B组文件类型,亦即它是否需用特定的算法进行压缩的文件类型。此时系统将首先验证该文件的扩展名是否列在B组文件的文件扩展名列表中,如果是,系统将接着验证该文件的控制信息是否与B组文件控制信息列表中的相应控制信息正好相符。如果上述两个验证都是肯定的,则该文件属于B组文件类型;如果有任一验证是否定的,则该文件不属于B组文件类型。
C.如果该文件不属于B组文件类型,则系统自动采用系统预设的通用无损压缩编码(例如LZW)压缩该文件。
D.如果该文件属于B组文件类型,则系统将决定它是只包含一种数据信息类型的简单文件(例如一个bmp图象),或是包含多种数据信息类型的复合文件(例如一个既包含文本信息也包含图象信息的ppt文件,或包含多个文件的文件包)。
E.对于一个简单文件,根据该文件的文件格式,系统将可自动识别该文件包含的数据信息类型,并自动采用一种适当的压缩编码。例如,对于文本信息或X光照片,系统将自动采用无损压缩,对于一个彩色照片,系统将根据用户的选择,自动采用有损或无损压缩。
F.对于一个复合文件,根据该文件的文件格式,系统将自动对它进行信息单元拆分,令每个信息单元只包含一种数据信息类型。系统可以采用与上述E相似的方式,自动压缩每一个信息单元中的数据信息。
G.为了保存上述那些被压缩过的数据信息和相应的控制信息,系统需定义自身的文件包格式。该格式可由系统设计者指定和命名,例如可命名为BCF格式(Batch Compression Format),具有文件扩展名bcf。图一的最后一个步骤,即将各个已进行压缩或未进行压缩的文件,形成一个BCF文件包。
H.如果用户指定的批量文件还没有全部处理完毕,则系统重复进行上述A到G的过程,直到全部处理完毕。
附注1:在本发明中,为减少操作的复杂性,也可不将复合文件列入B组文件类型,从而复合文件也将采用通用无损编码进行压缩。此时的流程框图将如图2所示,上述操作步骤中将没有上述操作步骤D和F。
附注2:本发明中也可不设定B组文件类型,需要压缩的文件一律采用通用无损压缩编码,如流程框图图3所示。
本发明也提供对批量计算机文件的解压缩方法,当压缩流程如图1所示,则解压缩流程如图4所示。在图4的起始端,由用户指定待进行遍历性解压缩的批量文件,其余的操作由采用本发明的系统自动完成,如下所述:
A.从上述批量文件中任取一个文件,检查它是否具有·bcf扩展名。如果不是,则直接作为已解压文件;如果是,则根据该文件的控制信息,验证它是否确为bcf文件。如果不是,则亦直接作为已解压文件;如果是,则进入下一步操作:
B.根据该bcf文件的文件格式,决定该文件是否为已压缩文件。如果不是已压缩文件,则直接作为已解压文件;如果是已压缩文件,则进入下一步操作:
C.根据该bcf文件的文件格式,决定该文件是只包含一种被压缩数据信息类型的简单文件,或是包含多种被压缩数据信息类型的复合文件。
D.如果该文件是一个已被压缩的简单文件,系统将自动识别该文件中的数据信息类型,并且使用与压缩编码相应的解压缩编码,解压该文件中数据信息。
E.如果该文件是一个已被压缩的复合文件,并且该复合文件不是完全用同一种压缩编码进行压缩的,系统将自动地把该文件拆分为多个信息单元,每个单元只包含一种被压缩数据信息类型。
F.识别每个信息单元的数据信息类型,并且使用与压缩编码相应的解压编码解压每个信息单元,形成已解压文件。
G.如果上述批量文件还未全部完成上述处理,系统将自动重复上面A到F的操作,直到全部文件处理完毕。
附注3:如果本系统在进行压缩操作时,是按附注1进行的,即复合文件是采用通用无损编码进行压缩的,则此时对该复合文件亦直接采用对应的解压编码,系统不对该复合文件进行信息单元拆分,没有上述E和F项操作。
附注4:如果本系统在进行压缩时,是按附注2进行的,即需要压缩的文件均是采用通用无损编码进行压缩的,则亦均采用对应的解压缩编码对之解压。