公开/公告号CN102023980A
专利类型发明专利
公开/公告日2011-04-20
原文格式PDF
申请/专利权人 北京大学;北大方正集团有限公司;北京北大方正技术研究院有限公司;
申请/专利号CN200910092853.1
申请日2009-09-09
分类号G06F17/30;
代理机构北京同达信恒知识产权代理有限公司;
代理人黄志华
地址 100871 北京市海淀区颐和园路5号
入库时间 2023-12-18 02:05:01
法律状态公告日
法律状态信息
法律状态
2023-09-15
未缴年费专利权终止 IPC(主分类):G06F17/30 专利号:ZL2009100928531 申请日:20090909 授权公告日:20121031
专利权的终止
2022-09-27
专利权的转移 IPC(主分类):G06F17/30 专利号:ZL2009100928531 登记生效日:20220915 变更事项:专利权人 变更前权利人:北京大学 变更后权利人:北京大学 变更事项:地址 变更前权利人:100871 北京市海淀区颐和园路5号 变更后权利人:100871 北京市海淀区颐和园路5号 变更事项:专利权人 变更前权利人:北大方正集团有限公司 北京北大方正技术研究院有限公司 变更后权利人:新方正控股发展有限责任公司 北京北大方正技术研究院有限公司
专利申请权、专利权的转移
2012-10-31
授权
授权
2011-06-08
实质审查的生效 IPC(主分类):G06F17/30 申请日:20090909
实质审查的生效
2011-04-20
公开
公开
技术领域
本发明涉及数据处理领域,尤其涉及一种文件描述信息存储以及文件数据读取的方法、装置。
背景技术
目前人们往往会使用winzip、winrar等软件对多个文件数据打包压缩成包文件后进行存储。包文件中包括各个文件数据及其对应的文件描述信息,文件描述信息用于描述对应的文件数据的相关信息,如初始文件标识(文件名或全路径)、文件数据大小、压缩后大小以及压缩方法等。在第一次读取包文件中的文件数据前,需要对包文件中所有的文件描述信息进行解析并读取到内存后才能读取所需的文件数据,从而使得第一次读取文件数据的时间过长,影响读取效率及用户体验。
上述缺陷是由每个文件描述信息(file header)的结构引起的。因为传统方案中的文件描述信息是可变长的,并且各个文件描述信息在包文件中的存储是按照文件数据写入的顺序排列的,而写入的顺序是不固定的,因此在第一次读取包文件中的文件数据前,必须先按照该写入的顺序依次对包文件中所有的文件描述信息进行解析。此外,包文件中存储的文件描述信息中包括初始文件标识,任何人都可以在打开包文件时看到其中包括哪些文件数据,因此安全性不好,容易引起信息泄露。
发明内容
本发明实施例提供一种文件描述信息存储以及文件数据读取的方法、装置,用以在第一次读取包文件中的文件数据前,无需对包文件中所有文件描述信息进行解析并读取,从而缩短第一次读取文件数据的时间,提高读取效率及用户体验,还可以提高包文件的安全性。
一种文件描述信息存储的方法,包括:
收集所有文件描述信息,每项所述文件描述信息中包括初始文件标识;
按照预定的最终文件标识确定规则,根据所述初始文件标识确定对应的固定长度的最终文件标识;
将每项所述文件描述信息中的初始文件标识用确定出的对应的最终文件标识替换;
根据替换后的最终文件标识对所有文件描述信息进行排序;以及
将排序后的所有文件描述信息存储到包文件中。
一种文件描述信息存储的装置,包括:
收集单元,用于收集所有文件描述信息,每项所述文件描述信息中包括初始文件标识;
确定单元,用于按照预定的最终文件标识确定规则,根据所述初始文件标识确定对应的固定长度的最终文件标识;
替换单元,用于将每项所述文件描述信息中的初始文件标识用确定出的对应的最终文件标识替换;
排序单元,用于根据替换后的最终文件标识对所有文件描述信息进行排序;以及
存储单元,用于将排序后的所有文件描述信息存储到包文件中。
一种文件数据读取的方法,包括:
确定所有文件描述信息在包文件中的位置信息,每项所述文件描述信息中包括固定长度的最终文件标识;
根据用户指定的初始文件标识确定对应的最终文件标识;
根据确定出的对应的最终文件标识以及所述位置信息,在所述所有文件描述信息中查找对应的文件描述信息;
根据查找到的文件描述信息读取对应的文件数据。
一种文件数据读取的装置,包括:
第一确定单元,用于确定所有文件描述信息在包文件中的位置信息,每项所述文件描述信息中包括固定长度的最终文件标识;
第二确定单元,用于根据用户指定的初始文件标识确定对应的最终文件标识;
查找单元,用于根据所述第二确定单元确定出的对应的最终文件标识及所述第一确定单元确定出的位置信息,在所述所有文件描述信息中查找对应的文件描述信息;
读取单元,用于根据所述查找单元查找到的文件描述信息读取对应的文件数据。
本发明有益效果如下:本发明实施例在存储文件描述信息到包文件中时,按照预定的最终文件标识确定规则,根据文件描述信息中的初始文件标识确定对应的固定长度的最终文件标识,然后用确定出的最终文件标识替换初始文件标识,并根据最终文件标识对所有文件描述信息进行排序,再将排序后的所有文件描述信息存储到包文件中。这样,由于存储的文件描述信息中的最终文件标识长度固定,且各文件描述信息有序排列,因此在第一次读取包文件中的文件数据前,无需对包文件中的所有文件描述信息进行解析并读取,只要根据用户指定的初始文件标识确定对应的最终文件标识,再根据最终文件标识查找对应的文件描述信息,即可读取对应的文件数据,从而缩短了第一次读取文件数据的时间,提高了读取效率及用户体验。另外,由于用保密性强的最终文件标识替换了初始文件标识,因此在打开包文件时看到的只是其中的文件数据的最终文件标识,而无法知道其初始文件标识,即无法知道具体是哪些文件数据,而只有知道文件数据的初始文件标识的用户才能够读取其中的文件数据,从而提高了包文件的安全性。
附图说明
图1为本发明实施例中一种文件描述信息存储方法的流程图;
图2为本发明实施例中一种文件描述信息存储装置的结构图;
图3为本发明实施例中一种文件数据读取方法的流程图;
图4为本发明实施例中一种文件数据读取装置的结构图。
具体实施方式
本发明实施例提供了一种文件描述信息存储的方法、装置,以及一种文件数据读取的方法、装置,通过将可变长的初始文件标识转换成固定长度的最终文件标识,并根据最终文件标识对所有文件描述信息进行排序,从而在第一次读取包文件中的文件数据前,无需对包文件中的所有文件描述信息进行解析并读取,只要根据用户指定的初始文件标识确定对应的最终文件标识,再根据最终文件标识查找对应的文件描述信息,即可读取对应的文件数据,从而缩短了第一次读取文件数据的时间,提高了读取效率及用户体验。此外,通过用保密性强的最终文件标识替换初始文件标识,提高包文件的安全性。
下面结合附图对本发明的具体实施方式及对应产生的有益效果进行详细描述。
如图1所示,为本发明实施例提供的文件描述信息存储方法的流程图,该方法包括如下步骤:
步骤101、收集所有文件描述信息,每项文件描述信息中包括初始文件标识。
其中,初始文件标识可以为文件名或全路径。
步骤102、按照预定的最终文件标识确定规则,根据初始文件标识确定对应的固定长度的最终文件标识。
其中,预定的最终文件标识确定规则可以有多种,包括但不限于以下两种最终文件标识确定规则:
1、将所有初始文件标识保存在初始文件标识列表中,按照该列表中的保存顺序依次为所有初始文件标识进行编号,将该编号作为对应的最终文件标识。例如,列表中第一个初始文件标识的编号为0,第二个初始文件标识的编号为1,第三个初始文件标识的编号为2,以此类推。当然,也可以采用其他的编号形式进行编号,只要每个初始文件标识对应唯一的一个编号即可。
2、利用哈希函数,根据初始文件标识,计算对应的哈希值作为最终文件标识。当哈希函数足够优秀、哈希值域远远大于初始文件标识的数目时,可以认为计算出的各个哈希值不会冲突。
在采用第一种最终文件标识确定规则时,可以将初始文件标识列表进行保存,既可以保存在包文件中,也可以保存在包文件之外的其他外存中,以方便在读取包文件中的文件数据时进行利用该列表。另外,该列表中还可以对应保存确定出的最终文件标识,以方便在读取包文件中的文件数据时,根据用户指定的初始文件标识在该列表中直接查找到对应的最终文件标识。该包括初始文件标识及对应的最终文件标识的初始文件标识列表可以保存在包文件中。
在采用第二种最终文件标识确定规则时,由于不需要有初始文件标识列表,因此进一步隐藏了包文件中的文件数据信息。
此外,所述最终文件标识的固定长度可以根据实际需要进行设定,也可以根据系统的不同设定不同的固定长度,只要确保同一包文件中的所有最终文件标识的长度相同且该长度可以满足实际需要即可实现本发明的目的。
步骤103、将每项所述文件描述信息中的初始文件标识用确定出的对应的最终文件标识替换。
这样保证了所有文件描述信息都是等长的。而且,由于最终文件标识不会直接反映出文件数据信息,保密性强,因此在用户打开包文件时看到的只是其中的文件数据的最终文件标识,而无法知道其初始文件标识,如文件名或路径名,即无法知道具体是哪些文件数据,而只有知道文件数据的初始文件标识的用户才能够读取其中的文件数据,从而提高了包文件的安全性。
步骤104、根据替换后的最终文件标识对所有文件描述信息进行排序。
其中,可以根据上述编号的大小顺序对所有文件描述信息进行排序,也可以根据实际需要按照其他排序规则对所有文件描述信息进行排序,例如利用哈希(hash)表、树等规则对所有文件描述信息进行排序,只要保证在读取包文件中的文件数据时,可以方便地根据该顺序确定对应的文件描述信息即可。
步骤105、将排序后的所有文件描述信息存储到包文件中。
相应地,本发明实施例提供了一种文件描述信息存储的装置,其结构如图2所示,包括:
收集单元201,用于收集所有文件描述信息,每项文件描述信息中包括初始文件标识;
其中,初始文件标识为文件名或全路径。
确定单元202,用于按照预定的最终文件标识确定规则,根据初始文件标识确定对应的固定长度的最终文件标识;
其中的预定的最终文件标识确定规则与上述方法中的最终文件标识确定规则相同,此处不再赘述。
替换单元203,用于将每项文件描述信息中的初始文件标识用确定出的对应的最终文件标识替换;
排序单元204,用于根据替换后的最终文件标识对所有文件描述信息进行排序;
其中的排序方式与上述方法中描述的排序方式相同,此处不再赘述。
存储单元205,用于将排序后的所有文件描述信息存储到包文件中。
此外,本发明实施例还提供一种文件数据读取方法,用于从包文件中读取用户指定的文件数据,其具体流程如图3所示,包括以下步骤:
步骤301、确定所有文件描述信息在包文件中的位置信息,每项文件描述信息中包括固定长度的最终文件标识。
其中,该包文件中的所有文件描述信息是根据上述文件描述信息存储方法存储到包文件中的,包文件中记录有文件描述信息的位置信息。
步骤302、根据用户指定的初始文件标识确定对应的最终文件标识。
其中,初始文件标识可以为文件名或全路径。
根据用户指定的初始文件标识确定对应的最终文件标识的方式包括如下之一:
1、根据保存有所有文件描述信息中的最终文件标识对应的初始文件标识的初始文件标识列表,按照该列表中的保存顺序确定用户指定的初始文件标识对应的编号,将该编号作为对应的最终文件标识。
2、利用哈希函数,根据用户指定的初始文件标识,计算对应的哈希值作为最终文件标识。
其中,根据用户指定的初始文件标识确定对应的最终文件标识的方式应与将文件描述信息存储到包文件中时根据初始文件标识确定对应的最终文件标识采用的最终文件标识确定规则相应,从而保证初始文件标识和最终文件标识之间的唯一对应关系。
在采用第一种方式确定用户指定的初始文件标识对应的最终文件标识时,如果初始文件标识列表中还包括各个初始文件标识对应的最终文件标识,则可以直接在该列表中查找用户指定的初始文件标识对应的最终文件标识。
步骤303、根据确定出的对应的最终文件标识以及位置信息,在所有文件描述信息中查找对应的文件描述信息。
其中,可以将所有文件描述信息从包文件中读取到内存中,但是只是读取而无需像现有技术中那样进行深度解析。或者,也可以在将所有文件描述信息从包文件中读取到内存中后,根据所有文件描述信息中的最终文件标识在内存中建立相应的数据结构或hash表。于是,可以利用多路查找等方式直接在这些排序后的文件描述信息中进行查找。
步骤304、根据查找到的文件描述信息读取对应的文件数据。
相应地,本发明实施例还提供一种文件数据读取的装置,其结构如图4所示,包括:
第一确定单元401,用于确定所有文件描述信息在包文件中的位置信息,每项文件描述信息中包括固定长度的最终文件标识;
其中,该包文件中的所有文件描述信息是根据上述文件描述信息存储方法存储到包文件中的,包文件中记录有文件描述信息的位置信息。
第二确定单元402,用于根据用户指定的初始文件标识确定对应的最终文件标识;
其中,初始文件标识为文件名或全路径。
查找单元403,用于根据第二确定单元402确定出的对应的最终文件标识及第一确定单元401确定出的位置信息,在所有文件描述信息中查找对应的文件描述信息;
读取单元404,用于根据查找单元403查找到的文件描述信息读取对应的文件数据。
第二确定单元402可以包括如下之一:
确定子单元,用于根据保存有所有文件描述信息中的最终文件标识对应的初始文件标识的初始文件标识列表,按照该列表中的保存顺序确定用户指定的初始文件标识对应的编号,将该编号作为对应的最终文件标识;或
计算子单元,用于根据用户指定的初始文件标识,计算对应的哈希值作为最终文件标识。
如果初始文件标识列表中还包括各个初始文件标识对应的最终文件标识,则第二确定单元402可以包括:
查找子单元,用于在包括最终文件标识的初始文件标识列表中查找用户指定的初始文件标识对应的最终文件标识。
下面举例说明本发明实施例提供的方法、装置在一种包文件结构中的应用,该包文件由文件头(Header),文件描述信息块(Entry块)和文件数据信息块(文件流,Bitstream块)组成。其中,Entry块和Bitstream块在一个包文件中可以出现多个。对包文件中的各元素的说明如表1所示。
表1
其中,文件头结构中各元素的具体说明如表2所示。
表2
Entry块结构中各文件信息的具体说明如表3所示。
表3
Bitstream块结构中各文件信息的具体说明如表4所示。
表4
其中,Entry块中的item即为文件描述信息。将上述文件描述信息存储方法应用到该文件包结构中时,具体步骤如下:
步骤1、收集所有的item,每项item对应一个初始文件标识(即Path)。
步骤2、为每个Path显式分配一个唯一数值NameValue,例如,可以为第一个Path分配数值0,后续的Path对应的数值依次加1。
步骤3、用NameValue替换对应的Path。
步骤4、根据NameValue对所有item进行排序。
步骤5、将Path与对应的NameValue组成一对,并将所有的Path与NameValue对保存成一个列表NameTable.
步骤6、将排序后的所有item以及NameTable存储到包文件中。
采用上述方法后,表3中的Entry块结构更改为表5所示的结构。
表5
其中,NameTable的结构如表6所示。
表6
其中,ItemList的结构如表7所示。
表7
相应地,从该包文件中读取文件数据的方法具体包括:
步骤1、读取NameTable(如果Entry块已压缩,需要先解压缩)。
步骤2、确定第一个item的位置。
步骤3、用户指定初始文件标识(Path)。
步骤4、根据该Path在NameTable中查找对应的NameValue。
步骤5、在包文件中,直接根据EntryLength和第一个item的位置,利用查找到的NameValue在所有的Item中进行2分查找,找到对应的Item。
步骤6、根据该Item读取对应的文件数据。
以上应用中,采用初始文件标识和最终文件标识的第一种最终文件标识确定规则。在采用第二种最终文件标识确定规则,即利用哈希函数,计算初始文件标识对应的最终文件标识时,文件描述信息存储方法的具体步骤如下:
其中,所用的哈希函数是MD5算法。
步骤1、收集所有的Item,每项Item对应一个初始文件标识(即Path)。
步骤2、利用上述哈希函数,为每个Path计算对应的NameValue。
其中,根据上述MD5算法得到的NameValue的长度为16字节(如表8所示),这样的固定长度可以确保Hash冲突足够小。
步骤3、用NameValue替换对应的Path。
步骤4、根据NameValue对所有item进行排序。
步骤5、将排序后的所有item存储到包文件中。
采用上述方法后,表3中的Entry块结构更改为表8所示的结构。
表8
其中,ItemList的结构如表9所示。
表9
相应地,从该包文件中读取文件数据的方法具体包括:
步骤1、确定第一个item的位置。
步骤2、根据EntryLength和第一个item的位置直接读取所有的Item到内存中,但无需进行解析。
步骤3、用户指定初始文件标识(Path)。
步骤4、利用上述哈希函数,计算该Path对应的NameValue。
步骤5、在内存中,根据该NameValue在所有Item中进行2分查找,找到对应的Item。
步骤6、根据该Item读取对应的文件数据。
此外,从该包文件中读取文件数据的方法还可以采用如下步骤进行,具体包括:
步骤1、确定第一个item的位置。
步骤2、依次读取Item,并根据其中的NameValue放置到一个哈希表中。
步骤3、用户指定初始文件标识(Path)。
步骤4、利用上述哈希函数,计算该Path对应的NameValue。
步骤5、在内存中,根据该计算出的NameValue直接在上述哈希表中找到对应的Item。
步骤6、根据该Item读取对应的文件数据。
以上的本发明实施例在存储文件描述信息到包文件中时,按照预定的最终文件标识确定规则,根据文件描述信息中的初始文件标识确定对应的固定长度的最终文件标识,然后用确定出的最终文件标识替换初始文件标识,并根据最终文件标识对所有文件描述信息进行排序,再将排序后的所有文件描述信息存储到包文件中。这样,由于存储的文件描述信息中的最终文件标识长度固定,且各文件描述信息有序排列,因此在第一次读取包文件中的文件数据前,无需对包文件中的所有文件描述信息进行解析并读取,只要根据用户指定的初始文件标识确定对应的最终文件标识,再根据最终文件标识查找对应的文件描述信息,即可读取对应的文件数据,从而缩短了第一次读取文件数据的时间,提高了读取效率及用户体验。另外,由于用保密性强的最终文件标识替换了初始文件标识,即隐藏了文件数据的初始文件标识,因此在打开包文件时看到的只是其中的文件数据的最终文件标识,而无法知道其初始文件标识,即无法知道具体是哪些文件数据,而只有知道文件数据的初始文件标识的用户才能够读取其中的文件数据,从而提高了包文件的安全性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
机译: 应用文件信息形成装置,描述信息提取装置,应用文件信息形成方法和描述信息提取方法
机译: 用于将可扩展样式表语言设备描述文件与非专有语言设备描述文件相关联的装置,存储介质和方法
机译: 文件信息生成方法,文件信息生成装置以及存储文件信息生成程序的存储介质