CN101655877B - 一种文件打包、提取的方法和装置 - Google Patents

一种文件打包、提取的方法和装置 Download PDF

Info

Publication number
CN101655877B
CN101655877B CN2009102029183A CN200910202918A CN101655877B CN 101655877 B CN101655877 B CN 101655877B CN 2009102029183 A CN2009102029183 A CN 2009102029183A CN 200910202918 A CN200910202918 A CN 200910202918A CN 101655877 B CN101655877 B CN 101655877B
Authority
CN
China
Prior art keywords
file
item
group
fileinfo
apmb package
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009102029183A
Other languages
English (en)
Other versions
CN101655877A (zh
Inventor
仇睿恒
汤帜
王毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Peking University
Founder Apabi Technology Ltd
Original Assignee
Peking University
Peking University Founder Group Co Ltd
Beijing Founder Apabi Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University, Peking University Founder Group Co Ltd, Beijing Founder Apabi Technology Co Ltd filed Critical Peking University
Priority to CN2009102029183A priority Critical patent/CN101655877B/zh
Priority to PCT/CN2009/000706 priority patent/WO2010043098A1/zh
Publication of CN101655877A publication Critical patent/CN101655877A/zh
Application granted granted Critical
Publication of CN101655877B publication Critical patent/CN101655877B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件打包、提取的方法和装置,以解决现有技术中打包工具不够灵活且功能不够全面的问题。文件打包的方法包括:收集待打包的文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;将每个文件项所包含的文件信息分为至少两组;根据各组的组标识将各组中的文件信息写入包文件。文件提取的方法包括:提取包文件中包含指定的唯一性标识的组中的文件信息;根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;根据所述位置信息提取所述文件数据所在的组中的文件信息。通过上述文件打包、提取方法,使得文件打包和提取时更加的灵活。

Description

一种文件打包、提取的方法和装置
技术领域
本发明涉及数据处理领域,尤其涉及一种文件打包、提取的方法和装置。
背景技术
文件打包,指的是将存储设备中保存的多个文件合成一个文件,合成后的文件称为包文件,用户还可以从包文件中提取出所需的文件。
在日常生活中,计算机中存在大量的文件。为了合理布局和便于查找,人们通常将这些文件进行分类、存档。在分类、存档时,往往需要将多个文件进行打包。一般,用户会选择WinZip等工具来对这些文件进行打包存储,这类工具的打包具体步骤包括:首先将需要打包的各个文件进行压缩,然后将压缩后的各个文件写入到一个包文件内,并将与各个文件相应的信息集中存放在一起。
使用WinZip打包确实可以解决多文件的存档问题,并且可以对被打包的文件进行数据压缩,从而节省了存储空间。但是由于WinZip本身的文件结构,即这类工具是将所有的文件数据集中存放,所以会导致这种打包方式存在一定的缺点和限制,例如:(1)需要获取全部数据后才能进行操作。(2)不适应网络应用。(3)不能保存同一文件的多个历史版本等。因此,现有打包工具无论是在文件打包时,还是在文件提取时都不够灵活且功能不够全面。
发明内容
本发明实施例提供一种文件打包、提取的方法和装置,用以解决现有打包工具不够灵活且功能不够全面的问题,例如,现有打包工具需要获取全部数据后才能进行操作;现有打包工具不适应网络应用;现有打包工具不能保存同一文件的多个历史版本等问题。
本发明实施例提供一种文件打包的方法,包括:
收集待打包的文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
将所有文件项进行排序,并将排序后的文件项进行合并;
将所有文件项组合为至少一个集合;
将每个集合中的每个文件项所包含的文件信息分为至少两组;
在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;
根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
本发明实施例提供一种文件打包的装置,包括:
收集模块,用于收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
排序模块,用于将所有文件项进行排序;
合并模块,用于将文件项进行合并;
分组模块,用于将每个集合中的每个文件项所包含的文件信息分为至少两组;
写模块,用于根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
本发明实施例提供一种文件提取的方法,包括:
提取包文件中包含指定的唯一性标识的组中的文件信息;
根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;
根据所述位置信息提取所述文件数据所在的组中的文件信息。
本发明实施例提供一种文件提取的装置,包括:
第一提取模块,用于提取包文件中包含指定的唯一性标识的组中的文件信息;
确定模块,用于根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;
第二提取模块,用于根据所述位置信息提取所述文件数据所在的组中的文件信息。
其中,本发明实施例提供文件提取的方法和装置中提取的包文件是通过下列步骤生成的:
收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;将所有文件项进行排序,并将排序后的文件项进行合并;将所有文件项组合为至少一个集合;将每个集合中的每个文件项所包含的文件信息分为至少两组;在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
在本发明实施例中所有需要打包的文件都由至少一个独立的文件项来描述,并且还将每个文件项所包含的文件信息进行分组,使得文件打包和提取时更加的灵活,而且功能更加全面,例如,通过本发明实施例提供的文件打包方法,由于每个文件都有至少一个文件项来描述,即将一个文件分为多个文件项,并且将每个文件项中包含的文件信息进行分组,从而可以根据需要获取其中的部分数据,即可进行操作;同样,在网络应用中,也可以在上述文件打包方法的基础上,按照网络传输顺序对文件项进行打包,从而达到线性化的效果;此外,基于上述文件打包方法,可以在包文件尾部新增文件项,从而可以保存同一文件的多个历史版本。
附图说明
图1为本发明实施例中文件打包的方法的原理流程图;
图2为本发明实施例中一种文件打包方法的具体流程图;
图3为本发明实施例中一种包文件修改方法的具体流程图;
图4为本发明实施例中另一种包文件修改方法的具体流程图;
图5为本发明实施例中又一种包文件修改方法的具体流程图;
图6为本发明实施例中一种包文件结构的示意图;
图7为本发明实施例中一种包文件结构中文件头的结构示意图;
图8为本发明实施例中一种包文件结构中Entry块的结构示意图;
图9为本发明实施例中一种包文件结构中Bitstream块的结构示意图;
图10为本发明实施例中对包文件做增量修改的示意图;
图11为本发明实施例中包文件线性化结构的示意图;
图12为本发明实施例中一种文件打包装置的结构图;
图13为本发明实施例中一种文件提取方法的原理流程图;
图14为本发明实施例中一种文件提取装置的结构图。
具体实施方式
本发明实施例中,首先收集所有需要打包的文件,其中每个文件都由至少一个文件项来描述,然后将每个文件项所包含的文件信息分成至少两组,并根据各组的组标识将各组中的文件信息写入包文件。
在本发明实施例中,文件项所包含的文件信息包括:类型(文件或文件夹)、名称、路径、操作、文件数据以及与文件数据相关的描述信息、数据长度、数据指向(或数据位置)、数据编码方法序列、校验值等等。上述文件信息对于每个文件项来说并不一定全部出现,而是可以根据需要进行选择、组合。其中,一部分文件信息的含义是:
(1)校验值能够保证文件内容的正确性,从而提高整体的可靠性。
(2)操作指的是将包文件看作一个虚拟的存储设备,在该存储设备上进行的新建、删除、替换、修改、追加、切换当前目录等可能的文件系统操作。一个文件项中只包含上述文件系统操作中的任意一种。
(3)文件数据是原始文件数据经过指定的数据编码方法处理后得到的,如果未指定数据编码方法,则将原始文件数据直接作为所需的文件数据。
对于文件项来说,文件数据有时可以为空。具体来说,当某个文件项中的操作是删除时,并不需要文件数据,这时文件数据为空。
(4)数据编码方法序列是一个或者多个数据编码方法构成的序列。不仅仅包含一般意义上的数据编码方法,本发明实施例还将加解密方法看作为数据编码方法。这是因为加解密方法与数据编码方法一样,都是将数据从一种表示形式变换为另一种表示形式,只不过加解密方法在变换的过程中与密钥等安全信息相关。通过在该序列中添加不同的数据编码方法,然后按照该序列对相应数据进行编码处理,继而达到灵活的扩展压缩和安全处理。
另外,有一些文件信息在开始时不能获得,必须在后续的处理过程中才能计算得到,例如,文件数据在包文件中的位置等。这些文件信息可以在后期处理时得到,并写入到文件项中相应的位置处。
下面结合说明书附图对本发明实施例的具体实施方式进行详细描述。
如图1所示,本发明实施例提供的文件打包方法的基本步骤包括:
步骤110、收集待打包的文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
步骤120、将每个文件项所包含的文件信息分为至少两组;
步骤130、根据各组的组标识将各组中的文件信息写入包文件。
本发明实施例中,文件项中的一些文件信息可以在开始时获得,也可以在后续处理过程中获得,例如,容量相对较大的文件数据可以在开始时获得,也可以在写入包文件之前的处理过程中获得并写入到相应位置处,以提高灵活性和效率。
下面针对具体应用需要,对上述文件打包方法的四个具体实施例进行详细描述。
实施例一
如图2所示,本发明实施例提供的一种文件打包方法的具体步骤包括:
步骤210、收集所有需要打包的文件,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息,其中,文件信息可以由用户或者外部程序提供。
步骤220、将所有文件项进行排序。其中,进行排序的方式有很多种,例如:
(1)按照文件系统的结构层次前序排列。
(2)按照实际使用时文件项的访问顺序排列。在这种排序方式下,由于包文件内部的文件数据是按照实际使用时的访问顺序存储的,所以当包文件在网络传输时,可以在下载整个包文件的同时,使用包文件中已经下载完毕的文件数据部分,从而达到线性化的效果。
(3)按照收集文件项时的收集顺序排列。
(4)按照文件名称或路径名称排列。
在本发明实施例中,将文件项进行排序的方式并不限于以上四种,只要保证对于每一个文件项在使用路径时,都可以找到相应的路径即可。其中,路径名称可以有多种方式,如:
A、相对路径:通过显式的操作指定当前路径,或者在某些操作里面隐含的指定了当前路径,之后的文件项可以相对当前路径进行操作。
B、绝对路径:文件项中包含所需的绝对路径,直接使用即可。
C、显式指定层次结构:通过各文件项之间的指针、引用、包含等等关系来确定层次结构。
步骤230、将排序后的文件项进行合并。
具体地,所述合并包括将操作具有逻辑关系的文件项进行合并,并将多个文件项中重复的文件信息删减为一份,该多个文件项是指描述同一文件的多个文件项。例如,文件项1所包含的操作为新建文件A,文件项2对文件A的操作为替换,其中,文件项2替换掉了文件项1中新建的文件A的内容,则文件项1和文件项2合并后可得到文件项3,该文件项3所包含的操作是新建文件A,且文件项3中的文件数据是文件项2提供的替换文件项1中文件A数据的替换数据;如果之后还有文件项4对文件A的操作时追加,文件项5对文件A的操作是删除,则文件项3,4和5合并后的结果是0个文件项。可见,通过上述合并处理,能够达到简化操作,减少存储开销的目的。
步骤240、将所有文件项组合为一个或多个集合。
在实际应用中,可能收集到的文件项很多,或者外部程序或用户有分集合存储的需求,这时可以根据实际应用需要进行集合划分,例如根据所需集合大小或体积、所需集合组大小或体积等进行集合划分。例如,假设收集到四个文件项:文件项1、文件项2、文件项3和文件项4,由于外部程序有分集合存储的需求,则根据所需集合大小将这四个文件项分为两个集合:集合1和集合2,其中,集合1包括文件项1和文件项2,集合2包括文件项3和文件项4。
步骤250、将每个文件项所包含的文件信息分为至少两组。
分组的原则与具体的应用相关,例如:可以将一个文件项中的类型、名称、数据指向等文件描述信息作为第一组,将数据长度、数据编码方法序列和文件数据等容量相对较大的数据信息作为第二组。其中,假设第一组的组标识为Entry,第二组的组标识为Bitstream。则上述四个文件项所包含的文件信息分别被分为两组:两组的组标识分别为Entry和Bitstream。
步骤260、在每个集合中将组标识相同的各组中的文件信息组合成一个集合组。
仍以上述四个文件项为例,在集合1中,将文件项1和文件项2中组标识为Entry的第一组中的文件信息组合成集合1中的集合组1,将文件项1和文件项2中组标识为Bitstream的第二组中的文件信息组合成集合1中的集合组2;在集合2中,将文件项3和文件项4中组标识为Entry的第一组中的文件信息组合成集合2中的集合组1,将文件项3和文件项4中组标识为Bitstream的第二组中的文件信息组合成集合2中的集合组2。其中,假设集合组1的集合组标识为Entry Block(Entry块);集合组2的集合组标识为Bitstream Block(Bitstream块)。
步骤270、根据各集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
此时,可以按照以下顺序将上述集合组中的文件信息写入包文件:集合1中的集合组1、集合1中的集合组2、集合2中的集合组1和集合2中的集合组2。较佳地,在每个集合组的头部写入属于同一集合的其他集合组的位置信息以及该集合组所属的集合相邻的集合中与该集合组具有相同的集合组标识的集合组的位置信息,例如,集合1中的集合组1的头部写入集合1中的集合组2的位置信息以及集合组2中的集合组1的位置信息。此时,如果集合组1中包括的文件信息为容量相对较小的文件描述信息,集合组2中包括的文件信息为容量相对较大的文件数据信息,并且在将集合组1和集合组2写入包文件时,先写入集合组1,再写入集合组2,则在例如网络应用时,用户可以首先获取到集合组1中所有文件项的文件描述信息,即可在没有下载容量较大的文件数据信息之前,就获知该集合中具体包括哪些文件数据,从而决定是否下载这些文件数据或下载其中的哪些文件数据,这样就很大程度上方便了用户。
上述步骤220中对文件项进行排序是为步骤230中将文件项进行合并、查找、步骤250中将文件信息分为至少两组提供便利,而在步骤270之前,还可以包括对集合组中的文件信息进行排序的步骤,此时,可以根据各集合组的存储需要进行排序,可以包括以下两种排序方法:(1)统一排序,即对同一集合中集合组标识不同的集合组中的文件信息按照相同的排序方法进行排序,例如,对集合1中的集合组1和集合组2都按照文件系统的结构层次前序排列;(2)分别排序,即对同一集合中集合组标识不同的集合组中的文件信息按照不同的排序方法进行排序,但是同一文件项内的各组之间存在对应关系,例如,对集合组2中的集合组1按照文件系统的结构层次前序排列,而对集合组2中的集合组2按照实际使用时文件项的访问顺序进行排序,而同一文件项内的第一组和第二组之间存在一定的对应关系,例如可以通过第一组中记录的数据指向来定位所对应的其他文件信息在第二组中的位置。
另外,由于文件信息中可以包括数据编码方法序列,所以步骤270之前还可以包括根据数据编码方法序列对文件信息中包含的数据进行数据编码处理的步骤。其中,数据编码方法序列可以根据实际应用的需要随时添加或删除指定的数据编码方法。
上述实施例一中,各步骤的执行顺序只是具体实施中的一种方式,在实际应用中,可以根据具体应用需要对上述各步骤的执行顺序以及是否执行某步骤进行调整,例如,在不需要对文件项进行合并时,不执行步骤230,并且先执行步骤250,再执行步骤220;或者先执行步骤240,再执行步骤220,等等。本发明对各步骤的执行顺序并不做限定。
实施例二
在实际应用中,还有可能对包文件中某些文件项中的文件信息进行修改,如图3所示,本发明实施例提供的一种包文件修改方法包括以下步骤:
步骤310、收集包含修改文件内容的文件项,并取出包文件内的所有文件项。
步骤320、将从包文件中取出的文件项与收集到的包含修改文件内容的文件项进行合并。
具体合并方法与实施例一中的合并方法相同,此处不再赘述。
步骤330、将合并后的文件项写入包文件。
具体地,将合并后的文件项写入包文件的方法与实施例一中的写入方法相同,此处不再赘述。
上述实施例二描述的修改方法属于洁净存储,即不保留原来的文件项内容,而将修改后的文件项重新进行打包。
实施例三
如图4所示,本发明实施例提供的另一种包文件修改方法包括以下步骤:
步骤410、收集包含修改文件内容的文件项,并取出包文件内的所有文件项。
步骤420、将收集到的包含修改文件内容的文件项与对应修改的从包文件中取出的文件项组合成一个文件项。
例如,收集到的包含修改文件内容的文件项1为修改包文件中取出的文件项2中的文件数据,则将文件项1和文件项2组合成一个文件项。
步骤430、将组合后的文件项中包含的文件信息分为至少两组,并将包含文件数据的组中包含的文件信息按照使用时的顺序进行排序。
步骤440、将排序后得到的各组中的文件信息写入包文件。
较佳地,包含文件数据的组中的文件信息最后写入。具体的写入方法与实施例一中的写入方法相同,此处不再赘述。
上述实施例三描述的修改方法属于线性化存储,即将同一文件的数据信息按照使用的顺序进行存储,并将经过排序后的文件项重新进行打包。
实施例四
如图5所示,本发明实施例提供的另一种包文件修改方法包括以下步骤:
步骤510、收集包含修改文件内容的文件项。
步骤520、将收集到的包含修改文件内容的文件项写到包文件尾部。
具体地,将收集到的包含修改文件内容的文件项写入包文件的方法与实施例一中的写入方法相同,此处不再赘述。
如果需要对包文件进行多次修改,则可将每次修改时包含修改文件内容的文件项视为一个修改单元添加到包文件的尾部,根据修改的次数,包文件被分为多个单元,初始包文件为第一单元,第一次修改添加的内容为第二单元,第二次修改添加的内容为第三单元,以此类推,即对包文件进行的所有操作都可以通过在包文件尾部添加文件项的方式实现,从而记录了包文件的历史信息。
上述实施例四描述的修改方法属于增量存储,即将包含修改文件内容的文件项直接写到包文件尾部,而不需要从包文件中取出其中的文件项。
下面举例说明本发明实施例所采用的一种包文件的结构,如图6所示,为本发明实施例中一种包文件结构的示意图。本发明实施例中,包文件由文件头(Header),文件描述信息块(Entry块)和文件数据信息块(文件流,Bitstream块)组成。其中,Entry块和Bitstream块在一个包文件中可以出现多个。对包文件中的各元素的说明如表1所示。
表1
Figure GDA0000148728290000111
其中,文件头的结构示意图如图7所示,其中各元素的具体说明如表2所示。
表2
Figure GDA0000148728290000112
Entry块的结构示意图如图8所示,其中各文件信息的具体说明如表3所示。
表3
Figure GDA0000148728290000113
表4
Figure GDA0000148728290000122
Bitstream块的结构示意图如图9所示,其中各文件信息的具体说明如表5所示。
表5
上述包文件允许用户做增量修改,也就是说,修改的内容会写入到包文件的尾部,这样可以最大限度的减小文件需要移动的数据量。具体的操作分两部分:首先在原来的包文件尾部增加新的Entry块和BitStream块,然后将原来最后一个Entry块的Next指针指向该新增加的Entry块的起始位置,如图10所示。
在网络应用中,要求有良好的数据传输性能,这种包文件可以对内部的数据块做线性化处理,以达到适应流式传输的需要。具体的做法是:将所有的Entry块组合在一起放在包文件的开始部分,将所有的BitStream块按使用顺序组织在一起,然后修改ItemOffset,从而指向正确的位置。
更进一步,在Entry块内部,可以按页的顺序把每页所需的文件项按顺序排列,以达到更好的线性化效果,如图11所示。
相应的,本发明实施例还提供一种文件打包的装置,如图12所示,该装置至少包括:
收集模块1201,用于收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
分组模块1202,用于将每个文件项所包含的文件信息分为至少两组;
写模块1203,用于根据各组的组标识将各组中的文件信息写入包文件。
上述文件打包装置还可以包括:第一集合组模块,用于将所有文件项组合为一个集合;并在该集合中将组标识相同的各组中的文件信息组合成一个集合组;
则写模块1203进一步用于根据各集合组的集合组标识将各集合组中的文件信息写入包文件。
上述文件打包装置还可以包括:第二集合组模块,用于将所有文件项分为多个集合;并在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;
则写模块1203进一步用于根据集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
上述文件打包装置还可以包括:排序模块,用于将所有文件项进行排序;
其中,进行排序的方式包括下述方式中的至少一种:
按照文件系统的结构层次前序排列;
按照实际使用时文件项的访问顺序排列;
按照文件名称或路径名称排列;
按照收集文件项时的收集顺序排列。
上述文件打包装置还可以包括:编码模块,用于根据文件信息中包含的表示多个数据编码方法排列顺序的数据编码方法序列对文件信息中的数据进行数据编码处理。
上述文件打包装置还可以包括:合并模块,用于将文件项进行合并。
上述文件打包装置还可以包括:第一修订模块,用于收集包含修改文件内容的文件项,并取出包文件内的所有文件项;以及将从包文件中取出的文件项与收集到的包含修改文件内容的文件项进行合并;
则写模块1203进一步用于将合并后的文件项写入包文件。
由于文件信息中包含操作,该操作是将包文件作为一个虚拟的存储设备,在该存储设备上进行的文件系统操作,并且每个文件项的文件信息中只包含一个操作;则上述文件打包装置还可以包括:合并模块,用于将操作具有逻辑关系的文件项进行合并,并将多个文件项中重复的文件信息删减为一份,所述多个文件项是描述同一文件的多个文件项。
上述文件打包装置还可以包括:第二修订模块,用于收集包含修改文件内容的文件项,并取出所述包文件内的所有文件项;将收集到的包含修改文件内容的文件项与对应修改的从所述包文件中取出的文件项组合成一个文件项;以及将组合后的文件项中包含的文件信息分为至少两组,并将所有文件项中包含文件数据的组中包含的文件信息按照使用时的顺序进行排序;
则写模块1203进一步用于将排序后得到的各组中的文件信息写入包文件。
上述文件打包装置还可以包括:第三修订模块,用于收集包含修改文件内容的文件项;
则写模块1203进一步用于将收集到的包含修改文件内容的文件项写到所述包文件尾部。
相应的,本发明实施例还提供一种文件提取的方法,用于从利用上述文件打包方法获得的包文件中提取文件,如图13所示,包括以下步骤:
步骤1310、提取包文件中包含指定的唯一性标识的组中的文件信息;
步骤1320、根据提取到的文件信息确定所需文件数据所在的组的位置信息;
步骤1330、根据该位置信息提取所需文件数据所在的组中的文件信息。
其中,所述包文件中包含至少一个文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息,且每个文件项所包含的文件信息被分为至少两组。
步骤1310中,提取包文件中包含指定的唯一性标识的组中的文件信息,包括:
根据用户输入的提取信息确定对应的唯一性标识;
根据确定出的唯一性标识提取对应组中的文件信息。
其中,所述唯一性标识为文件名称或路径名称。
特别的,如果所有文件项中的唯一性标识的字节数相等,在对文件项进行排序后,可以使用多叉查找算法直接在组内进行搜索。
下面以上述包文件结构为例,详细说明上述文件提取方法的具体实施方式。其中,文件提取有以下两种情况:
一、一般性文件提取
1、打开包文件,读取文件头,并进行校验等操作;
2、依次读取Entry,并对每个Entry进行如下操作:
(1)确定该Entry中是否包含用户指定的唯一性标识;
(2)若该Entry中包含该唯一性标识,则根据该Entry中的文件信息,如对应的Bitstream的偏移,确定该对应Bitstream的位置信息,并根据该位置信息提取该Bitstream中的文件信息;若该Entry中不包含该唯一性标识,则跳转到下一个Entry。
3、将提取到的Entry和Bitstream中的文件信息合并后返回给用户。
二、线性化读取
1、打开包文件,读取文件头,并进行校验等操作;
2、依次读取Entry,并对每个Entry进行如下操作:
(1)确定该Entry中是否包含用户指定的唯一性标识;
(2)若该Entry中包含该唯一性标识,则根据该Entry中的文件信息,如对应的Bitstream的偏移,确定该对应Bitstream的位置信息,并根据该位置信息提取该Bitstream中的文件信息;若该Entry中不包含该唯一性标识,则跳转到下一个Entry。
3、确定Bitstream中的文件信息是否提取完成,在提取完成后,将提取到的Entry和Bitstream中的文件信息合并后返回给用户。
相应的,本发明实施例还提供一种文件提取的装置,其结构如图14所示,包括:
第一提取模块1410,用于提取包文件中包含指定的唯一性标识的组中的文件信息;
确定模块1420,用于根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;
第二提取模块1430,用于根据所述位置信息提取所述文件数据所在的组中的文件信息。
在本发明实施例中,对包文件中的内容进行修改时,可以不将整个包文件进行重写,而是将包含修改文件内容的文件项以增量修改的形式写入包文件尾部即可。
另外,还可以达到保存包内文件的历史版本的目的。例如,在文件A被加入包文件之后,又对文件A进行修改,则可以将修改后的文件A再次加入包文件,则包文件中包含文件A修改前后的文件内容。
而且,在本发明实施例中,可以将包内文件的存储顺序按照用户使用时的顺序进行排列,从而使得包文件在网络上进行线性传输时,可以按照用户使用的顺序获取文件,从而达到线性化的效果。
同时,本发明实施例还能够通过提供的提取文件的方法,利用上述文件打包方法得到的包文件,快速、灵活的提取到用户所需的文件。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (24)

1.一种文件打包的方法,其特征在于,包括:
收集待打包的文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
将所有文件项进行排序,并将排序后的文件项进行合并;
将所有文件项组合为至少一个集合;
将每个集合中的每个文件项所包含的文件信息分为至少两组;
在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;
根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
2.如权利要求1所述的方法,其特征在于,其中,所述进行排序的方式包括下述方式中的至少一种:
按照文件系统的结构层次前序排列;
按照实际使用时文件项的访问顺序排列;
按照文件名称或路径名称排列;
按照收集文件项时的收集顺序排列。
3.如权利要求1所述的方法,其特征在于,所述文件信息中包含表示多个数据编码方法排列顺序的数据编码方法序列;
所述根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件之前,还包括:
根据所述数据编码方法序列对所述文件信息中包含的数据进行数据编码处理。
4.如权利要求1所述的方法,其特征在于,所述根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件之后,还包括:
收集包含修改文件内容的文件项,并取出所述包文件内的所有文件项;
将从所述包文件中取出的文件项与收集到的包含修改文件内容的文件项进行合并;
将合并后的文件项写入包文件。
5.如权利要求4所述的方法,其特征在于,所述文件信息中包含操作,所述操作是将所述包文件作为一个虚拟的存储设备,在该存储设备上进行的文件系统操作,并且每个文件项的文件信息中只包含一个操作。
6.如权利要求5所述的方法,其特征在于,所述合并包括将操作具有逻辑关系的文件项进行合并,并将多个文件项中重复的文件信息删减为一份,所述多个文件项是描述同一文件的多个文件项。
7.如权利要求1所述的方法,其特征在于,所述根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件之后,还包括:
收集包含修改文件内容的文件项,并取出所述包文件内的所有文件项;
将收集到的包含修改文件内容的文件项与对应修改的从所述包文件中取出的文件项组合成一个文件项;
将组合后的文件项中包含的文件信息分为至少两组,并将所有文件项中包含文件数据的组中包含的文件信息按照使用时的顺序进行排序;
将排序后得到的各组中的文件信息写入包文件。
8.如权利要求7所述的方法,其特征在于,所述将排序后得到的各组中的文件信息写入包文件,包括:
将排序后的所有文件项组合为一个集合;
在该集合中将组标识相同的各组中的文件信息组合成一个集合组,得到两个集合组:文件描述信息块和文件数据信息块;
将文件描述信息块写入包文件的开始部分,将文件数据信息块写入到所述文件描述信息块后面,并设置文件描述信息块中的ItemOffset指向文件数据信息块的偏移位置。
9.如权利要求1所述的方法,其特征在于,所述根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件之后,还包括:
收集包含修改文件内容的文件项;
将收集到的包含修改文件内容的文件项写到所述包文件尾部。
10.如权利要求9所述的方法,其特征在于,所述将收集到的包含修改文件内容的文件项写到所述包文件尾部,包括:
在所述包文件尾部增加新的文件描述信息块和文件数据信息块;
将所述包文件中最后的文件描述信息块的Next指针指向所述新的文件描述信息块的起始位置。
11.如权利要求1所述的方法,其特征在于,所述包文件包括:
文件头,描述包括版权版本信息和历史版本数量的基本信息;
文件描述信息块,文件流入口描述,包括包文件内文件流的位置;
文件数据信息块,多个文件流的顺序组合,包括数据编码方式的信息描述。
12.一种文件打包的装置,其特征在于,包括:
收集模块,用于收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;
排序模块,用于将所有文件项进行排序;
合并模块,用于将文件项进行合并;
分组模块,用于将每个集合中的每个文件项所包含的文件信息分为至少两组;
写模块,用于根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件;
第一集合组模块,用于将所有文件项组合为一个集合,并在该集合中将组标识相同的各组中的文件信息组合成一个集合组;
第二集合组模块,用于将所有文件项分为多个集合,并在每个集合中将组标识相同的各组中的文件信息组合成一个集合组。
13.如权利要求12所述的装置,其特征在于,所述排序模块进行排序的方式包括下述方式中的至少一种:
按照文件系统的结构层次前序排列;
按照实际使用时文件项的访问顺序排列;
按照文件名称或路径名称排列;
按照收集文件项时的收集顺序排列。
14.如权利要求12所述的装置,其特征在于,还包括:
编码模块,用于根据所述文件信息中包含的表示多个数据编码方法排列顺序的数据编码方法序列对所述文件信息中的数据进行数据编码处理。
15.如权利要求12所述的装置,其特征在于,还包括:
第一修订模块,用于收集包含修改文件内容的文件项,并取出所述包文件内的所有文件项;以及将从所述包文件中取出的文件项与收集到的包含修改文件内容的文件项进行合并;
则所述写模块进一步用于将合并后的文件项写入包文件。
16.如权利要求15所述的装置,其特征在于,所述文件信息中包含操作,所述操作是将所述包文件作为一个虚拟的存储设备,在该存储设备上进行的文件系统操作,并且每个文件项的文件信息中只包含一个操作;则所述装置还包括:
合并模块,用于将操作具有逻辑关系的文件项进行合并,并将多个文件项中重复的文件信息删减为一份,所述多个文件项是描述同一文件的多个文件项。
17.如权利要求12所述的装置,其特征在于,还包括:
第二修订模块,用于收集包含修改文件内容的文件项,并取出所述包文件内的所有文件项;将收集到的包含修改文件内容的文件项与对应修改的从所述包文件中取出的文件项组合成一个文件项;以及将组合后的文件项中包含的文件信息分为至少两组,并将所有文件项中包含文件数据的组中包含的文件信息按照使用时的顺序进行排序;
则所述写模块进一步用于将排序后得到的各组中的文件信息写入包文件。
18.如权利要求12所述的装置,其特征在于,还包括:
第三修订模块,用于收集包含修改文件内容的文件项;
则所述写模块进一步用于将收集到的包含修改文件内容的文件项写到所述包文件尾部。
19.一种文件提取的方法,其特征在于,包括:
提取包文件中包含指定的唯一性标识的组中的文件信息;
根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;
根据所述位置信息提取所述文件数据所在的组中的文件信息;
其中,所述提取的包文件是通过下列步骤生成的:
收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;将所有文件项进行排序,并将排序后的文件项进行合并;将所有文件项组合为至少一个集合;将每个集合中的每个文件项所包含的文件信息分为至少两组;在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
20.如权利要求19所述的方法,其特征在于,所述包文件中包含至少一个文件,其中,每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息,且每个文件项所包含的文件信息被分为至少两组。
21.如权利要求19所述的方法,其特征在于,所述提取包文件中包含指定的唯一性标识的组中的文件信息,包括:
根据用户输入的提取信息确定对应的唯一性标识;
根据确定出的唯一性标识提取对应组中的文件信息。
22.如权利要求20或21所述的方法,其特征在于,所述唯一性标识为文件名称或路径名称。
23.如权利要求20所述的方法,其特征在于,所有文件项中的所述唯一性标识的字节数相等。
25.一种文件提取的装置,其特征在于,包括:
第一提取模块,用于提取包文件中包含指定的唯一性标识的组中的文件信息;
确定模块,用于根据所述提取到的文件信息确定所需文件数据所在的组的位置信息;
第二提取模块,用于根据所述位置信息提取所述文件数据所在的组中的文件信息;
其中,提取的包文件是通过下列步骤生成的:
收集待打包的文件,其中每个文件由至少一个文件项来描述,每个文件项包含多个用于描述文件内容的文件信息;将所有文件项进行排序,并将排序后的文件项进行合并;将所有文件项组合为至少一个集合;将每个集合中的每个文件项所包含的文件信息分为至少两组;在每个集合中将组标识相同的各组中的文件信息组合成一个集合组;根据所述集合中各集合组的集合组标识将各集合组中的文件信息写入包文件。
CN2009102029183A 2008-10-14 2009-05-18 一种文件打包、提取的方法和装置 Expired - Fee Related CN101655877B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN2009102029183A CN101655877B (zh) 2008-10-14 2009-05-18 一种文件打包、提取的方法和装置
PCT/CN2009/000706 WO2010043098A1 (zh) 2008-10-14 2009-06-24 一种文件打包、提取的方法和装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200810224424.0 2008-10-14
CNA2008102244240A CN101398853A (zh) 2008-10-14 2008-10-14 一种文件打包的方法和装置
CN2009102029183A CN101655877B (zh) 2008-10-14 2009-05-18 一种文件打包、提取的方法和装置

Publications (2)

Publication Number Publication Date
CN101655877A CN101655877A (zh) 2010-02-24
CN101655877B true CN101655877B (zh) 2012-11-07

Family

ID=40517405

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA2008102244240A Pending CN101398853A (zh) 2008-10-14 2008-10-14 一种文件打包的方法和装置
CN2009102029183A Expired - Fee Related CN101655877B (zh) 2008-10-14 2009-05-18 一种文件打包、提取的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNA2008102244240A Pending CN101398853A (zh) 2008-10-14 2008-10-14 一种文件打包的方法和装置

Country Status (2)

Country Link
CN (2) CN101398853A (zh)
WO (1) WO2010043098A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398853A (zh) * 2008-10-14 2009-04-01 北京大学 一种文件打包的方法和装置
CN102023980B (zh) * 2009-09-09 2012-10-31 北京大学 文件描述信息存储以及文件数据读取的方法、装置
CN101996259B (zh) * 2010-12-12 2012-07-04 成都东方盛行电子有限责任公司 基于白名单机制的数据深度解析方法
CN102902814B (zh) * 2012-10-24 2015-09-16 厦门市美亚柏科信息股份有限公司 一种im删除信息的恢复方法
CN103268452A (zh) * 2013-05-31 2013-08-28 福建伊时代信息科技股份有限公司 文件处理方法和装置
CN104539696B (zh) * 2014-12-26 2018-09-11 北京像素软件科技股份有限公司 一种客户端增量更新的方法及系统
CN104516988B (zh) * 2015-01-21 2018-09-28 天津书生云科技有限公司 一种文件写入方法和装置
CN106790302B (zh) * 2017-03-22 2019-08-20 无锡紫光存储系统有限公司 数据加密方法、数据解密方法及系统
CN107589948A (zh) * 2017-07-28 2018-01-16 北京北信源软件股份有限公司 项目文件部署方法及系统
CN107908404A (zh) * 2017-11-17 2018-04-13 深圳市泉眼网络科技有限公司 程序打包方法、系统及终端设备
CN110019168B (zh) * 2017-12-26 2021-04-20 浙江宇视科技有限公司 文件合并方法和系统
CN109814913B (zh) * 2018-12-25 2020-09-18 华为终端有限公司 一种应用包拆分重组和运行的方法和装置
CN109803006A (zh) * 2019-01-04 2019-05-24 福建天泉教育科技有限公司 分布式文件系统下的多文件批量打包方法、存储介质
CN113568645B (zh) * 2021-08-11 2023-09-12 网易(杭州)网络有限公司 软件更新方法、装置、电子设备和存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1141650C (zh) * 2002-01-07 2004-03-10 东南大学 基于可扩展标记语言的数字内容保密发送方法及保密接收方法
CN1242599C (zh) * 2003-08-29 2006-02-15 港湾网络有限公司 文件打包下载的处理方法
CN101026551A (zh) * 2006-10-10 2007-08-29 中山大学 一种通信传输中的文件打包解包方法
CN101398853A (zh) * 2008-10-14 2009-04-01 北京大学 一种文件打包的方法和装置

Also Published As

Publication number Publication date
WO2010043098A1 (zh) 2010-04-22
CN101655877A (zh) 2010-02-24
CN101398853A (zh) 2009-04-01

Similar Documents

Publication Publication Date Title
CN101655877B (zh) 一种文件打包、提取的方法和装置
CN101553813B (zh) 管理可单独访问的数据单元的存储器
CN110741637B (zh) 简化视频数据的方法、计算机可读存储介质和电子装置
CN102831001B (zh) 软件升级包的制作方法及装置、程序的升级方法及设备
CN102473185A (zh) 信息搜索系统、信息管理设备、信息搜索方法、信息管理方法、以及记录介质
CN102508880A (zh) 一种文件合并方法及分解方法
US20090254575A1 (en) Apparatus and method for manipulating nested archive files and folders
US10496612B2 (en) Method for reliable and efficient filesystem metadata conversion
CN105027071B (zh) 管理对存储数据单元的操作
CN102012896B (zh) 一种实现文件内容批量修改的方法和装置
CN105653592A (zh) 一种基于hdfs的小文件合并工具和方法
US20090070367A1 (en) Multi-version control method for data documents and device thereof
CN102893265A (zh) 管理可独立访问的数据单元的存储
CN101158981A (zh) 一种对下载资源进行分类的方法、系统和装置
CN108475508B (zh) 音频数据和保存在块处理存储系统中的数据的简化
CN107741889A (zh) 文档恢复方法、系统、可读存储介质及终端
CN103593447B (zh) 用于数据库表的数据处理方法和装置
CN110232004A (zh) 一种apfs文件系统数据恢复方法
CN101751475B (zh) 号段记录压缩方法及其装置
CN111625531B (zh) 基于可编程装置的合并装置、数据合并方法及数据库系统
JP2018524886A (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
CN101819603A (zh) 基于嵌入式系统的信息记录的检索方法和装置
CN101739391A (zh) 生成二进制文件格式电子书的方法及其生成的电子书
WO2020123710A1 (en) Efficient retrieval of data that has been losslessly reduced using a prime data sieve
CN102023980B (zh) 文件描述信息存储以及文件数据读取的方法、装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220617

Address after: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee after: Peking University

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Address before: 100871 No. 5, the Summer Palace Road, Beijing, Haidian District

Patentee before: Peking University

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121107