CN107633088A - 一种文件管理方法及装置 - Google Patents
一种文件管理方法及装置 Download PDFInfo
- Publication number
- CN107633088A CN107633088A CN201710905851.4A CN201710905851A CN107633088A CN 107633088 A CN107633088 A CN 107633088A CN 201710905851 A CN201710905851 A CN 201710905851A CN 107633088 A CN107633088 A CN 107633088A
- Authority
- CN
- China
- Prior art keywords
- file
- read
- compressed
- index value
- package files
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于文件管理技术领域,公开了一种文件管理方法及装置,所述方法包括:获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表;计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值;根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息;根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。本发明解决了文件读取效率低的问题,读取压缩包内文件时能够快速定位文件地址,极大地提高了文件读取效率。
Description
技术领域
本发明属于文件管理技术领域,尤其涉及一种文件管理方法及装置。
背景技术
应用软件在发布时,会把一些程序运行过程中用到的数据文件压缩打包,这样做的目的有三个:一是数据加密,使文件不能被直接查看和修改;二是减少磁盘空间的占用,缩小软件发布体积;三是统一文件管理,提高文件访问效率。
现有技术中,在软件发布时,将所有数据文件分类,经过加密和压缩处理后合并到若干个压缩数据包文件中;软件运行时,内部文件系统根据程序传递进来的文件名称,检索到文件在压缩数据包里的相对位置和长度,通过特定的接口操作完成数据读取和解密操作。但是,这种方式需要遍历压缩数据包的文件路径信息,检索到需要的文件后才能进行读取操作,导致文件读取效率低下。
发明内容
有鉴于此,本发明实施例提供了一种文件管理方法及装置,以解决现有技术中由于需要遍历压缩数据包的文件路径信息,检索到需要的文件后才能进行读取操作,导致文件读取效率低下的问题。
本发明实施例的第一方面提供了一种文件管理方法,包括:
获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,特征值表中存储有文件索引值和文件项描述信息的对应关系,文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系;
计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值;
根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息;
根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。
本发明实施例的第二方面提供了一种文件管理装置,包括:
文件索引哈希表建立模块,用于获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,特征值表中存储有文件索引值和文件项描述信息的对应关系,文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系;
文件索引值获取模块,用于计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值;
文件项描述信息获取模块,用于根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息;
文件解压缩模块,用于根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。
本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上所述文件管理方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上所述文件管理方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例提供的文件管理方法及装置通过获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值,根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息,根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作,从而可以有效解决由于需要遍历压缩数据包的文件路径信息,检索到需要的文件后才能进行读取操作,导致文件读取效率低下的问题,读取压缩包内文件时不需要进行字符串匹配,通过特征值表中的文件项描述信息能够快速定位文件地址,极大地提高了文件读取效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的文件管理方法的实现流程图;
图2是本发明实施例二提供的文件管理方法的实现流程图;
图3是本发明实施例三提供的文件管理方法的实现流程图;
图4是本发明实施例四提供的文件管理方法的实现流程图;
图5是本发明实施例五提供的文件管理装置的结构示意图;
图6是本发明实施例六提供的文件管理装置的结构示意图;
图7是本发明实施例七提供的文件管理装置的结构示意图;
图8是本发明实施例八提供的文件管理装置的结构示意图;
图9是本发明实施例九提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明的说明书和权利要求书及上述附图中的术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含一系列步骤或单元的过程、方法或系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
参照图1,图1示出了本发明实施例一提供的文件管理方法的实现流程,本实施例的流程执行主体可以是终端设备,其过程详述如下:
S101:获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,特征值表中存储有文件索引值和文件项描述信息的对应关系,文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系。
压缩包文件在逻辑上呈现垂直分布的三层结构,包括文件头区域、文件数据块区域和文件特征描述区域;其中文件头区域存储压缩包文件的头部结构信息,文件数据块区域存储压缩后的文件数据,文件特征描述区域存储特征值表。
压缩包文件的头部结构信息包括头部标识、头部大小、版本信息、文件数目、数据区偏移、特征值区偏移、文件压缩后的特征值区大小、文件压缩前的特征值大小、压缩单位、压缩包属性、文件项描述信息大小和签名;其中头部标识是一个固定值,版本信息用于版本控制,数据区偏移为文件数据块区域的起始地址,特征值区偏移为文件特征描述区域起始地址,压缩单位为64KB。
特征值表中存储有文件索引值和文件项描述信息的对应关系,特征值表可以理解为一个整形KEY的KEY-VALUE数据结构,KEY值为文件索引值,VALUE值为文件项描述信息。文件索引值是一个整数,初始值是0,对应文件压缩的顺序,文件索引值的最大值与压缩包内文件数目减一的值相同。文件项描述信息存储文件属性,包括文件偏移值、文件块大小、文件原始数据大小、哈希值、文件标识、文件修改时间、版本信息和保留字段;其中文件偏移值为文件在压缩包内的起始地址,文件块大小为文件压缩后的数据大小,文件原始数据大小为文件压缩前的数据大小,版本信息用于版本控制。
文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系,文件索引哈希表是一个KEY-VALUE数据结构,KEY值为哈希索引值,VALUE值为文件索引值。
压缩包文件的文件特征描述区域采用首尾相连的格式存储文件项描述信息,尽可能最小化地写入特征值表信息,这种存储结构反映了从文件索引值到文件项描述信息的映射关系。根据文件项描述信息中的文件哈希值计算得到文件哈希索引值,建立从哈希索引值到文件索引值的映射关系,从而建立了哈希索引值、文件索引值和文件项描述信息三者之间的多重映射关系,这种多重映射关系是逻辑上存在的,物理上只是一段连续字节流的文件块,这个文件块存储有若干个等大的文件项描述信息。
在具体应用中,读取压缩包文件的头部结构信息,根据头部结构信息中的特征值区偏移读取特征值表,特征值表中存储有文件索引值和文件项描述信息的对应关系,根据文件项描述信息中的哈希值计算文件的哈希索引值,并从特征值表中获取该文件的文件索引值,建立哈希索引值和文件索引值的对应关系,存储在文件索引哈希表中。
进一步地,在内存中建立树状形式存储的目录结构,方便快速浏览和查找文件。
S102:计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值。
具体地,根据哈希算法计算待读取文件路径的哈希值,将哈希值与一个整数因子进行与运算得到待读取文件的哈希索引值,根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值。
S103:根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息。
S104:根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。
具体地,从待读取文件的文件项描述信息中得到待读取文件的文件偏移值,根据待读取文件的文件偏移值在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。
在本实施例中,通过获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值,根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息,根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作,从而可以有效解决由于需要遍历压缩数据包的文件路径信息,检索到需要的文件后才能进行读取操作,导致文件读取效率低下的问题,读取压缩包内文件时不需要进行字符串匹配,通过特征值表中的文件项描述信息能够快速定位文件地址,极大地提高了文件读取效率。
实施例二
参照图2,图2示出了本发明实施例二提供的文件管理方法的实现流程。在上述实施例的基础上,本发明实施例详述如下:
S201:获取压缩包文件,从压缩包文件中获取压缩包文件的头部结构信息,并创建压缩包文件的特征值表。
其中,获取压缩包文件,从压缩包文件中获取压缩包文件的头部结构信息可以是新建自定义格式的压缩包文件,并写入头部结构信息,也可以是打开自定义格式的压缩包文件,并读取头部结构信息。
自定义格式的压缩包文件在逻辑上呈现垂直分布的三层结构,包括文件头区域、文件数据块区域和文件特征描述区域;其中文件头区域存储压缩包文件的头部结构信息,文件数据块区域存储压缩后的文件数据,文件特征描述区域存储特征值表。
压缩包文件的头部结构信息包括头部标识、头部大小、版本信息、文件数目、数据区偏移、特征值区偏移、文件压缩后的特征值区大小、文件压缩前的特征值大小、压缩单位、压缩包属性、文件项描述信息大小和签名;其中头部标识是一个固定值,版本信息用于版本控制,数据区偏移为文件数据块区域的起始地址,特征值区偏移为文件特征描述区域起始地址,压缩单位为64KB。
S202:获取待压缩文件,计算待压缩文件的哈希值和哈希索引值,并为哈希索引值配置文件索引值。
具体地,获取待压缩文件路径,根据哈希算法计算待压缩文件路径的哈希值,将哈希值与一个整数因子进行与运算得到待压缩文件的哈希索引值,并根据文件压缩顺序为文件的哈希索引值配置文件索引值,文件索引值是一个整数,初始值是0,文件索引值的最大值与压缩包内文件数目减一的值相同。
S203:生成待压缩文件的文件项描述信息,并将文件索引值和文件项描述信息的对应关系保存到特征值表中。
具体地,判断特征值表的文件项描述信息中是否存在待压缩文件的哈希值。
若特征值表的文件项描述信息中存在待压缩文件的哈希值,则将存在待压缩文件的哈希值的文件项描述信息中的文件标识设置为文件覆盖,并将待压缩文件的文件索引值和待压缩文件的文件项描述信息的对应关系保存到特征值表中。
若特征值表的文件项描述信息中不存在待压缩文件的哈希值,则将待压缩文件的文件索引值和待压缩文件的文件项描述信息的对应关系保存到特征值表中。
优选地,将待压缩文件的文件索引值和待压缩文件的文件项描述信息的对应关系保存到文件标识为文件覆盖的文件项描述信息的区域。
文件项描述信息存储文件属性,包括文件偏移值、文件块大小、文件原始数据大小、哈希值、文件标识、文件修改时间、版本信息和保留字段;其中文件偏移值为文件在压缩包内的起始地址,文件块大小为文件压缩后的数据大小,文件原始数据大小为文件压缩前的数据大小,版本信息用于版本控制。
S204:读取待压缩文件的原始文件数据,对原始文件数据进行加密和压缩处理,并将加密和压缩处理后的文件数据写入压缩包文件的数据块区域。
读取待压缩文件的原始文件数据,通过加密算法对原始文件数据进行加密,通过压缩算法对加密后的文件数据进行压缩,加密算法可以是Thief算法、AES算法或者RC4算法,压缩算法可以是LZ77算法或者HUFFMAN算法。
通过步骤S203中判断特征值表的文件项描述信息中是否存在待压缩文件的哈希值,确定压缩包文件中是否已经存在待压缩文件。
若特征值表的文件项描述信息中存在待压缩文件的哈希值,表明压缩包文件中已经存在待压缩文件,则保留压缩包内与待压缩文件同名的文件的文件数据块,并将待压缩文件经过加密和压缩处理后的文件数据写入压缩包文件的数据块区域。
若特征值表的文件项描述信息中不存在待压缩文件的哈希值,表明压缩包文件中不存在待压缩文件,则将待压缩文件经过加密和压缩处理后的文件数据写入压缩包文件的数据块区域。
优选地,将待压缩文件经过加密和压缩处理后的文件数据写入压缩包文件中文件标识为文件覆盖的文件数据块区域。
S205:将所有待压缩文件压缩完成后,将特征值表写入压缩包文件的文件特征描述区域。
步骤S206至S209与上述S101至S104一致,具体内容请参考S101至S104的相关描述,这里不再赘述。
在本实施例中,删除压缩包内文件时,只需要将待删除文件的文件标识更新为文件覆盖,不需要物理删除文件数据块,也不需要将后面的文件数据块向前迁移,从而减少了文件输入输出操作,达到快速删除文件的效果;添加文件时,优先使用文件标识为文件覆盖的文件数据块,达到了空间重复利用且分配空间速度较快的效果;通过对待压缩文件进行加密处理,使得即使压缩包文件的结构被破解了,也能在文件内容上保证文件安全;通过将压缩包文件设计成垂直分布的三层结构,使得压缩包文件具有较好的兼容性和扩展性,即使将来需要扩展头部结构信息和文件项描述信息中的数据项,也不影响不同版本间文件的读取效果;通过压缩包文件的头部结构信息中的版本信息可以对压缩包文件的版本控制提供支持;通过文件项描述信息中的版本信息可以对压缩包文件内的文件的版本控制提供支持。
实施例三
参照图3,图3示出了本发明实施例三提供的文件管理方法的实现流程。在上述实施例的基础上,本发明实施例详述如下:
步骤S301至S304与上述S101至S104一致,具体内容请参考S101至S104的相关描述,这里不再赘述。
S305:创建一个内存文件系统,内存文件系统用于存放压缩包文件的目录结构信息,目录结构信息以文件树的结构存在于内存文件系统中。
内存文件系统不依赖任何已经实现的具体文件系统来管理文件树,文件树上的节点对应着压缩包文件中真实的文件,内存文件系统管理压缩包文件内的文件名称、文件目录项和缓存的文件数据。
S306:将压缩包文件中的文件数据映射到共享内存中,并记录文件数据的映射信息。
其中,文件数据的映射信息包括文件名称、文件标识、文件首地址和文件长度。
将压缩包文件的位置与进程逻辑地址空间中一块大小相同的区域建立一种一一对应的关系,这种一一对应关系是逻辑上的概念,物理上是不存在的,在这个过程中,并没有实际的数据拷贝,压缩包文件没有被载入内存,只是逻辑上被放入了内存;上述过程返回逻辑地址空间的一个地址,通过MMU(Memory Management Unit,内存管理单元)将这个地址转换成物理地址,由于上述过程没有实际的数据拷贝,所以MMU地址转换失败,将导致缺页中断,由中断处理函数完成数据拷贝,如果在拷贝数据时物理内存不够用,则会通过虚拟内存机制将暂时不用的物理页面交换到硬盘上。
S307:提供文件数据的对外访问接口,以使外部程序从共享内存中读取文件数据。
在本实施例中,通过创建一个内存文件系统,内存文件系统用于存放压缩包文件的目录结构信息,目录结构信息以文件树的结构存在于内存文件系统中,将压缩包文件中的文件数据映射到共享内存中,并记录文件数据的映射信息,提供文件数据的对外访问接口,以使外部程序从共享内存中读取文件数据,由于整个过程中只进行了一次数据拷贝,所以外部程序通过访问内存来读取文件数据,尤其是文件数据比较大的情况下,能够显著地提高文件读取效率。
实施例四
参照图4,图4示出了本发明实施例四提供的文件管理方法的实现流程。在上述实施例的基础上,本发明实施例详述如下:
S401:获取压缩包文件的打开模式,压缩包文件的打开模式包括启动预读模式和磁盘读取模式。
S402:若打开模式为启动预读模式,比较压缩包文件与预存的预读文件的大小,如果压缩包文件大于预读文件,则返回文件打开失败信息,如果压缩包文件小于或等于预读文件,则将压缩包文件预读到缓存中。
S403:若打开模式为磁盘读取模式,则以文件输入输出模式打开压缩包文件。
步骤S404至S407与上述S101至S104一致,具体内容请参考S101至S104的相关描述,这里不再赘述。
在本实施例中,通过判断压缩包文件的打开模式,若打开模式为启动预读模式,且压缩包文件小于或等于预读文件,则将压缩包文件预读到缓存中,从而无需每次读取文件都从磁盘上操作文件,进一步提高了文件读取效率。
实施例五
参照图5,图5示出了本发明实施例五提供的文件管理装置500的结构示意图。本实施例中的文件管理装置500包括:文件索引哈希表建立模块501、文件索引值获取模块502、文件项描述信息获取模块503和文件解压缩模块504。
文件索引哈希表建立模块501,用于获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,特征值表中存储有文件索引值和文件项描述信息的对应关系,文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系。
文件索引值获取模块502,用于计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值。
文件项描述信息获取模块503,用于根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息。
文件解压缩模块504,用于根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作。
在本实施例中,通过文件索引哈希表建立模块获取压缩包文件的头部结构信息,根据头部结构信息获取特征值表,并建立文件索引哈希表,通过文件索引值获取模块计算待读取文件的哈希索引值,并根据待读取文件的哈希索引值从文件索引哈希表中得到待读取文件的文件索引值,通过文件项描述信息获取模块根据待读取文件的文件索引值从特征值表中得到待读取文件的文件项描述信息,通过文件解压缩模块根据待读取文件的文件项描述信息在压缩包文件的数据块区域读取待读取文件的文件数据,将文件数据进行解压缩和解密处理得到待读取文件的原始文件数据,完成对待读取文件的读取操作,从而可以有效解决由于需要遍历压缩数据包的文件路径信息,检索到需要的文件后才能进行读取操作,导致文件读取效率低下的问题,读取压缩包内文件时不需要进行字符串匹配,通过特征值表中的文件项描述信息能够快速定位文件地址,极大地提高了文件读取效率。
实施例六
参照图6,图6示出了本发明实施例六提供的文件管理装置500的结构示意图。在上述实施例的基础上,本实施例中的文件管理装置500还包括:特征值表创建模块505、计算模块506、文件项描述信息生成模块507、文件压缩模块508和特征值表保存模块509。
特征值表创建模块505,用于获取压缩包文件,从压缩包文件中获取压缩包文件的头部结构信息,并创建压缩包文件的特征值表。
计算模块506,用于获取待压缩文件,计算待压缩文件的哈希值和哈希索引值,并为哈希索引值配置文件索引值。
文件项描述信息生成模块507,用于生成待压缩文件的文件项描述信息,并将文件索引值和文件项描述信息的对应关系保存到特征值表中。
进一步地,文件项描述信息生成模块507还包括判断单元、第一判断结果处理单元和第二判断结果处理单元。
判断单元,用于判断特征值表的文件项描述信息中是否存在待压缩文件的哈希值。
第一判断结果处理单元,用于若特征值表的文件项描述信息中存在待压缩文件的哈希值,则将存在待压缩文件的哈希值的文件项描述信息中的文件标识设置为文件覆盖,并将待压缩文件的文件索引值和待压缩文件的文件项描述信息的对应关系保存到特征值表中。
第二判断结果处理单元,用于若特征值表的文件项描述信息中不存在待压缩文件的哈希值,则将待压缩文件的文件索引值和待压缩文件的文件项描述信息的对应关系保存到特征值表中。
文件压缩模块508,用于读取待压缩文件的原始文件数据,对原始文件数据进行加密和压缩处理,并将加密和压缩处理后的文件数据写入压缩包文件的数据块区域。
特征值表保存模块509,用于将所有待压缩文件压缩完成后,将特征值表写入压缩包文件的文件特征描述区域。
在本实施例中,通过第一判断结果处理单元,在删除压缩包内文件时,只需要将待删除文件的文件标识更新为文件覆盖,不需要物理删除文件数据块,也不需要将后面的文件数据块向前迁移,从而减少了文件输入输出操作,达到快速删除文件的效果;添加文件时,优先使用文件标识为文件覆盖的文件数据块,达到了空间重复利用且分配空间速度较快的效果;通过文件压缩模块对待压缩文件进行加密处理,使得即使压缩包文件的结构被破解了,也能在文件内容上保证文件安全;通过将压缩包文件设计成垂直分布的三层结构,使得压缩包文件具有较好的兼容性和扩展性,即使将来需要扩展头部结构信息和文件项描述信息中的数据项,也不影响不同版本间文件的读取效果;通过压缩包文件的头部结构信息中的版本信息可以对压缩包文件的版本控制提供支持;通过文件项描述信息中的版本信息可以对压缩包文件内的文件的版本控制提供支持。
实施例七
参照图7,图7示出了本发明实施例七提供的文件管理装置500的结构示意图。在上述实施例的基础上,本实施例中的文件管理装置500还包括:加载模块510、文件映射模块511和访问模块512。
加载模块510,用于创建一个内存文件系统,内存文件系统用于存放压缩包文件的目录结构信息,目录结构信息以文件树的结构存在于内存文件系统中。
文件映射模块511,用于将压缩包文件中的文件数据映射到共享内存中,并记录文件数据的映射信息。
访问模块512,用于提供文件数据的对外访问接口,以使外部程序从共享内存中读取文件数据。
在本实施例中,通过加载模块创建一个内存文件系统,内存文件系统用于存放压缩包文件的目录结构信息,目录结构信息以文件树的结构存在于内存文件系统中,通过文件映射模块将压缩包文件中的文件数据映射到共享内存中,并记录文件数据的映射信息,通过访问模块提供文件数据的对外访问接口,以使外部程序从共享内存中读取文件数据,由于整个过程中只进行了一次数据拷贝,所以外部程序通过访问内存来读取文件数据,尤其是文件数据比较大的情况下,能够显著地提高文件读取效率。
实施例八
参照图8,图8示出了本发明实施例八提供的文件管理装置500的结构示意图。在上述实施例的基础上,本实施例中的文件管理装置500还包括打开模式获取模块513、启动预读模式处理模块514和磁盘读取模式处理模块515。
打开模式获取模块513,用于获取压缩包文件的打开模式,压缩包文件的打开模式包括启动预读模式和磁盘读取模式。
启动预读模式处理模块514,用于若打开模式为启动预读模式,比较压缩包文件与预存的预读文件的大小,如果压缩包文件大于预读文件,则返回文件打开失败信息,如果压缩包文件小于或等于预读文件,则将压缩包文件预读到缓存中。
磁盘读取模式处理模块515,用于若打开模式为磁盘读取模式,则以文件输入输出模式打开压缩包文件。
在本实施例中,通过打开模式获取模块判断压缩包文件的打开模式,通过启动预读模式处理模块增加了启动预读机制,若打开模式为启动预读模式,且压缩包文件小于或等于预读文件,则将压缩包文件预读到缓存中,从而无需每次读取文件都从磁盘上操作文件,进一步提高了文件读取效率。
实施例九
参照图9,本发明实施例还提供了一种终端设备9,包括存储器91、处理器90以及存储在存储器中并可在处理器上运行的计算机程序92,所述处理器90执行所述计算机程序92时实现如上述实施例中所述的各方法实施例中的步骤,例如图1所示的步骤S101至步骤S104。或者,所述处理器90执行所述计算机程序92时实现如上述实施例中所述的各装置实施例中的各模块的功能,例如图5所示的模块501至504的功能。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器90、存储器91。例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述终端设备的内部存储单元,例如终端设备的硬盘或内存。所述存储器91也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括终端设备的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序92以及所述终端设备所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
实施例十
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述实施例中所述的各方法实施例中的步骤,例如图1所示的步骤S101至步骤S104。或者,所述计算机程序被处理器执行时实现如上述实施例中所述的各装置实施例中的各模块的功能,例如图5所示的模块501至504的功能。
所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种文件管理方法,其特征在于,包括:
获取压缩包文件的头部结构信息,根据所述头部结构信息获取特征值表,并建立文件索引哈希表,所述特征值表中存储有文件索引值和文件项描述信息的对应关系,所述文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系;
计算待读取文件的哈希索引值,并根据所述待读取文件的哈希索引值从所述文件索引哈希表中得到所述待读取文件的文件索引值;
根据所述待读取文件的文件索引值从所述特征值表中得到所述待读取文件的文件项描述信息;
根据所述待读取文件的文件项描述信息在所述压缩包文件的数据块区域读取所述待读取文件的文件数据,将所述文件数据进行解压缩和解密处理得到所述待读取文件的原始文件数据,完成对所述待读取文件的读取操作。
2.根据权利要求1所述的文件管理方法,其特征在于,在所述获取压缩包文件的头部结构信息之前,还包括:
获取压缩包文件,从所述压缩包文件中获取所述压缩包文件的头部结构信息,并创建所述压缩包文件的特征值表;
获取待压缩文件,计算所述待压缩文件的哈希值和哈希索引值,并为所述哈希索引值配置文件索引值;
生成所述待压缩文件的文件项描述信息,并将所述文件索引值和所述文件项描述信息的对应关系保存到所述特征值表中;
读取所述待压缩文件的原始文件数据,对所述原始文件数据进行加密和压缩处理,并将加密和压缩处理后的文件数据写入所述压缩包文件的数据块区域;
将所有待压缩文件压缩完成后,将所述特征值表写入所述压缩包文件的文件特征描述区域。
3.根据权利要求2所述的文件管理方法,其特征在于,所述生成所述待压缩文件的文件项描述信息,并将所述文件索引值和所述文件项描述信息的对应关系保存到所述特征值表中,包括:
判断所述特征值表的文件项描述信息中是否存在所述待压缩文件的哈希值;
若所述特征值表的文件项描述信息中存在所述待压缩文件的哈希值,则将存在所述待压缩文件的哈希值的文件项描述信息中的文件标识设置为文件覆盖,并将所述待压缩文件的文件索引值和所述待压缩文件的文件项描述信息的对应关系保存到所述特征值表中;
若所述特征值表的文件项描述信息中不存在所述待压缩文件的哈希值,则将所述待压缩文件的文件索引值和所述待压缩文件的文件项描述信息的对应关系保存到所述特征值表中。
4.根据权利要求1所述的文件管理方法,其特征在于,在所述完成对所述待读取文件的读取操作之后,还包括:
创建一个内存文件系统,所述内存文件系统用于存放所述压缩包文件的目录结构信息,所述目录结构信息以文件树的结构存在于所述内存文件系统中;
将所述压缩包文件中的文件数据映射到共享内存中,并记录所述文件数据的映射信息;
提供所述文件数据的对外访问接口,以使外部程序从所述共享内存中读取所述文件数据。
5.根据权利要求1所述的文件管理方法,其特征在于,在所述获取压缩包文件的头部结构信息之前,还包括:
获取压缩包文件的打开模式,所述压缩包文件的打开模式包括启动预读模式和磁盘读取模式;
若所述打开模式为启动预读模式,比较所述压缩包文件与预存的预读文件的大小,如果所述压缩包文件大于所述预读文件,则返回文件打开失败信息,如果所述压缩包文件小于或等于所述预读文件,则将所述压缩包文件预读到缓存中;
若所述打开模式为磁盘读取模式,则以文件输入输出模式打开所述压缩包文件。
6.一种文件管理装置,其特征在于,包括:
文件索引哈希表建立模块,用于获取压缩包文件的头部结构信息,根据所述头部结构信息获取特征值表,并建立文件索引哈希表,所述特征值表中存储有文件索引值和文件项描述信息的对应关系,所述文件索引哈希表中存储有文件的哈希索引值和文件索引值的对应关系;
文件索引值获取模块,用于计算待读取文件的哈希索引值,并根据所述待读取文件的哈希索引值从所述文件索引哈希表中得到所述待读取文件的文件索引值;
文件项描述信息获取模块,用于根据所述待读取文件的文件索引值从所述特征值表中得到所述待读取文件的文件项描述信息;
文件解压缩模块,用于根据所述待读取文件的文件项描述信息在所述压缩包文件的数据块区域读取所述待读取文件的文件数据,将所述文件数据进行解压缩和解密处理得到所述待读取文件的原始文件数据,完成对所述待读取文件的读取操作。
7.根据权利要求6所述的文件管理装置,其特征在于,还包括:
特征值表创建模块,用于获取压缩包文件,从所述压缩包文件中获取所述压缩包文件的头部结构信息,并创建所述压缩包文件的特征值表;
计算模块,用于获取待压缩文件,计算所述待压缩文件的哈希值和哈希索引值,并为所述哈希索引值配置文件索引值;
文件项描述信息生成模块,用于生成所述待压缩文件的文件项描述信息,并将所述文件索引值和所述文件项描述信息的对应关系保存到所述特征值表中;
文件压缩模块,用于读取所述待压缩文件的原始文件数据,对所述原始文件数据进行加密和压缩处理,并将加密和压缩处理后的文件数据写入所述压缩包文件的数据块区域;
特征值表保存模块,用于将所有待压缩文件压缩完成后,将所述特征值表写入所述压缩包文件的文件特征描述区域。
8.根据权利要求6所述的文件管理装置,其特征在于,还包括:
加载模块,用于创建一个内存文件系统,所述内存文件系统用于存放所述压缩包文件的目录结构信息,所述目录结构信息以文件树的结构存在于所述内存文件系统中;
文件映射模块,用于将所述压缩包文件中的文件数据映射到共享内存中,并记录所述文件数据的映射信息;
访问模块,用于提供所述文件数据的对外访问接口,以使外部程序从所述共享内存中读取所述文件数据。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述文件管理方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述文件管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710905851.4A CN107633088B (zh) | 2017-09-29 | 2017-09-29 | 一种文件管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710905851.4A CN107633088B (zh) | 2017-09-29 | 2017-09-29 | 一种文件管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107633088A true CN107633088A (zh) | 2018-01-26 |
CN107633088B CN107633088B (zh) | 2020-04-24 |
Family
ID=61103174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710905851.4A Active CN107633088B (zh) | 2017-09-29 | 2017-09-29 | 一种文件管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107633088B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109460667A (zh) * | 2018-11-05 | 2019-03-12 | 国家电网有限公司 | 招投标过程中的文件处理方法、系统及终端设备 |
CN110457302A (zh) * | 2019-07-31 | 2019-11-15 | 河南开合软件技术有限公司 | 一种结构化数据智能清洗方法 |
CN111104566A (zh) * | 2019-12-26 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 特征索引编码方法、装置、电子设备及存储介质 |
CN111414339A (zh) * | 2020-03-13 | 2020-07-14 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
CN111813436A (zh) * | 2020-06-17 | 2020-10-23 | 中车株洲电力机车研究所有限公司 | 一种批量更新配置文件的方法及系统 |
CN111966631A (zh) * | 2020-07-10 | 2020-11-20 | 福建升腾资讯有限公司 | 一种可快速分发的镜像文件生成方法、系统、设备和介质 |
CN112214458A (zh) * | 2020-10-19 | 2021-01-12 | 珠海金山网络游戏科技有限公司 | 数据转存储方法及装置 |
CN112925758A (zh) * | 2021-02-05 | 2021-06-08 | 深圳市优必选科技股份有限公司 | 生成压缩包的方法、装置及终端设备 |
CN113407573A (zh) * | 2021-06-11 | 2021-09-17 | 广发证券股份有限公司 | 一种实现多索引内存数据并发读写的方法 |
WO2022028486A1 (zh) * | 2020-08-04 | 2022-02-10 | 中国人民银行数字货币研究所 | 共享文件的方法、装置和系统 |
CN115470506A (zh) * | 2022-10-28 | 2022-12-13 | 山东华翼微电子技术股份有限公司 | 一种基于同态映射的安全文件系统实现方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024025A (zh) * | 2010-11-12 | 2011-04-20 | 电子科技大学 | 一种移动富媒体应用中大数据量压缩包的解压方法 |
CN102841907A (zh) * | 2011-06-24 | 2012-12-26 | 环达电脑(上海)有限公司 | 数据压缩和解压缩的处理方法 |
CN102880677A (zh) * | 2012-09-11 | 2013-01-16 | 珠海金山网络游戏科技有限公司 | 一种基于哈希的文件打包和读取方法 |
CN102902687A (zh) * | 2011-07-27 | 2013-01-30 | 华为软件技术有限公司 | 资源文件的访问方法及装置 |
CN105426348A (zh) * | 2015-10-22 | 2016-03-23 | 江苏国泰新点软件有限公司 | 一种可扩展标记语言xml文件的生成方法、装置和系统 |
CN106022014A (zh) * | 2016-05-16 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种资源文件的打包方法和解包方法 |
-
2017
- 2017-09-29 CN CN201710905851.4A patent/CN107633088B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024025A (zh) * | 2010-11-12 | 2011-04-20 | 电子科技大学 | 一种移动富媒体应用中大数据量压缩包的解压方法 |
CN102841907A (zh) * | 2011-06-24 | 2012-12-26 | 环达电脑(上海)有限公司 | 数据压缩和解压缩的处理方法 |
CN102902687A (zh) * | 2011-07-27 | 2013-01-30 | 华为软件技术有限公司 | 资源文件的访问方法及装置 |
CN102880677A (zh) * | 2012-09-11 | 2013-01-16 | 珠海金山网络游戏科技有限公司 | 一种基于哈希的文件打包和读取方法 |
CN105426348A (zh) * | 2015-10-22 | 2016-03-23 | 江苏国泰新点软件有限公司 | 一种可扩展标记语言xml文件的生成方法、装置和系统 |
CN106022014A (zh) * | 2016-05-16 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种资源文件的打包方法和解包方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109460667A (zh) * | 2018-11-05 | 2019-03-12 | 国家电网有限公司 | 招投标过程中的文件处理方法、系统及终端设备 |
CN110457302A (zh) * | 2019-07-31 | 2019-11-15 | 河南开合软件技术有限公司 | 一种结构化数据智能清洗方法 |
CN110457302B (zh) * | 2019-07-31 | 2022-04-29 | 河南开合软件技术有限公司 | 一种结构化数据智能清洗方法 |
CN111104566A (zh) * | 2019-12-26 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 特征索引编码方法、装置、电子设备及存储介质 |
CN111104566B (zh) * | 2019-12-26 | 2023-07-21 | 腾讯科技(深圳)有限公司 | 特征索引编码方法、装置、电子设备及存储介质 |
CN111414339B (zh) * | 2020-03-13 | 2023-04-25 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
CN111414339A (zh) * | 2020-03-13 | 2020-07-14 | 浙江大华技术股份有限公司 | 一种文件的处理方法、系统、装置、设备及介质 |
CN111813436A (zh) * | 2020-06-17 | 2020-10-23 | 中车株洲电力机车研究所有限公司 | 一种批量更新配置文件的方法及系统 |
CN111966631A (zh) * | 2020-07-10 | 2020-11-20 | 福建升腾资讯有限公司 | 一种可快速分发的镜像文件生成方法、系统、设备和介质 |
WO2022028486A1 (zh) * | 2020-08-04 | 2022-02-10 | 中国人民银行数字货币研究所 | 共享文件的方法、装置和系统 |
CN112214458B (zh) * | 2020-10-19 | 2023-08-11 | 珠海金山数字网络科技有限公司 | 数据转存储方法及装置 |
CN112214458A (zh) * | 2020-10-19 | 2021-01-12 | 珠海金山网络游戏科技有限公司 | 数据转存储方法及装置 |
CN112925758A (zh) * | 2021-02-05 | 2021-06-08 | 深圳市优必选科技股份有限公司 | 生成压缩包的方法、装置及终端设备 |
CN113407573A (zh) * | 2021-06-11 | 2021-09-17 | 广发证券股份有限公司 | 一种实现多索引内存数据并发读写的方法 |
CN115470506B (zh) * | 2022-10-28 | 2023-03-10 | 山东华翼微电子技术股份有限公司 | 一种基于同态映射的安全文件系统实现方法 |
CN115470506A (zh) * | 2022-10-28 | 2022-12-13 | 山东华翼微电子技术股份有限公司 | 一种基于同态映射的安全文件系统实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107633088B (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107633088A (zh) | 一种文件管理方法及装置 | |
CN107368259B (zh) | 一种向区块链系统中写入业务数据的方法和装置 | |
US11809584B2 (en) | File system metadata protection | |
CN104054086B (zh) | 针对一个或多个沙箱化应用程序的文件系统访问 | |
CN107562915A (zh) | 读取小文件的方法、装置和设备及计算机可读存储介质 | |
CN107609418A (zh) | 文本数据的脱敏方法、装置、存储设备以及计算机设备 | |
CN106452779A (zh) | 指纹图像数据的加密方法和装置 | |
CN107766469A (zh) | 一种缓存处理方法和装置 | |
CN109344568A (zh) | 基于区块链的文件处理方法及装置 | |
CN107888659A (zh) | 用户请求的处理方法及系统 | |
CN105468543A (zh) | 一种保护敏感信息的方法及装置 | |
CN109460667A (zh) | 招投标过程中的文件处理方法、系统及终端设备 | |
CN102609462A (zh) | 一种通过提取sql模板对海量sql压缩存储的方法 | |
WO2017181968A1 (zh) | 应用文件的处理方法、访问方法及装置、存储介质 | |
CN107133524A (zh) | 一种数据存储方法及装置 | |
CN107315973A (zh) | 用于安全元数据修改的一般化验证方案 | |
CN104298926A (zh) | 一种运行加密文件的方法和装置 | |
CN108777685A (zh) | 用于处理信息的方法和装置 | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN1794210A (zh) | 移动存储设备的数据安全存储和处理方法 | |
CN103793487A (zh) | 用于对电子印鉴账户数据集中存取的方法和系统 | |
CN103049705B (zh) | 一种基于虚拟化的安全存储方法、终端及系统 | |
CN102880677B (zh) | 一种基于哈希的文件打包和读取方法 | |
CN103761487B (zh) | 文件的隐藏方法及装置 | |
CN102867247B (zh) | 快速部署文件安全外发的办公自动化系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |