[发明专利]一种磁盘文件的快速检索方法有效
申请号: | 201310409275.6 | 申请日: | 2013-09-10 |
公开(公告)号: | CN103425802A | 公开(公告)日: | 2013-12-04 |
发明(设计)人: | 焦瑞莉;汪安春;李廷廷;赵长青 | 申请(专利权)人: | 北京信息科技大学;北京奥米菲克科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 付雷杰;李爱英 |
地址: | 100192 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 磁盘 文件 快速 检索 方法 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种磁盘文件的快速检索方法。
背景技术
由于计算机科学技术的高速发展,软件日益丰富,磁盘空间越来越大,这使得大量的文件存储在磁盘中成为可能。在系统研发的过程,判断某个文件是否存在于磁盘中,甚至存放在哪个目录中就变得非常困难,有时还需要对目录和目录下所有的子目录以及文件进行枚举,以找到该文件。在现有的方案中,采用了比较简单的数据结构。当文件和目录数量很大的时候,导致程序性能严重下降,并且保存和恢复的时间很长,这将降低用户体验。同时,当一个目录或者文件被从硬盘上删掉的时候,也很难快速将其记录从目录列表中清除掉。
发明内容
有鉴于此,本发明提供了一种磁盘文件的快速检索方法,能够实现对磁盘中大数据量文件的快速检索。
有益效果:
本发明通过在检索磁盘文件之前建立跳表,由于在跳表中查找代表文件的节点时采用了下向指针和后向指针,与现有技术中逐个比较文件名大小进行文件查找相比,本发明的采用的方法大大节省了时间成本,实现了快速检索的目的;
同时,本发明通过采用断点恢复,如果在遍历文件过程中非正常退出,则可以在再次启动时,从上一次断点位置恢复遍历过程,而避免重复遍历已经搜索到的文件,因此,可以进一步节省时间。
附图说明
图1为本发明中跳表的结构示意图。
图2为本发明中的节点查找的原理图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种磁盘文件的快速检索方法,包括如下步骤:
步骤1、申请N个内存块,其中每个内存块包括4字节共32比特的位图和32个数据块,对每一个内存块里的32个数据块,均采用虚拟指针,即该数据块的虚拟指针为所在内存块的块号和在该内存块中的位置,即偏移量;每个数据块中记录磁盘中一个文件信息,该信息包括文件的序号、存储路径、文件名、文件大小以及文件的最后一次访问时间;每一个数据块依次对应位图中的相应位,为1表示该位所对应的数据块被占用,为0则表示空闲;
步骤2、遍历用户需要监测的磁盘目录,将该磁盘目录下所有文件信息按顺序依次存入到步骤1建立的内存块的数据块中,当一个内存块中的全部数据块被占用后,再将该内存块中的最后一个文件信息中的路径和文件名存储到磁盘文件currentdir.dat中,将该内存块中的所有数据追加保存到磁盘文件memsave.bin中;
步骤3、建立跳表:
S301、跳表结构的创建:
在内存中申请M个内存块用来存放跳表结构;
然后创建一个具有行数为MAXLEVEL的跳表结构,该跳表结构的第一列中设置MAXLEVEL个头节点,最后一列设置有MAXLEVEL个空节点;由于在跳表中查找某一特定节点所需的时间和跳表的节点总数之间成线性关系,当跳表中节点个数增加时,查找节点的时间也随之增加。本发明的采用跳表技术是试图在跳表的查找上加上折半查找的特性,跳表的行数就是把折半查找的次数减1,例如,假如跳表的行数为1,则折半查找的次数为0,查找的效率等于跳表的查找效率;假如跳表的行数为2,则折半查找的次数为1,在跳表中查找的效率相当于在“节点总数为跳表中总节点数的1/2的跳表”的查找效率。跳表的行数越多则查找的效率越高,同时所需要的内存空间也就越大,因此,本发明中考虑到在保证查找效率同时节省空间,跳表行数MAXLEVEL取为lg(N),N为步骤2中遍历得到文件的文件个数,即为跳表的列数。
S302、将步骤2中遍历得到的每一个文件作为跳表结构中一列中的节点依次插入跳表结构中,得到跳表,具体方法如下:
A、A、令跳表结构中每个节点均采用虚拟指针,每个节点的虚拟指针包括后向指针和下向指针,其中任一个节点的后向指针指向跳表结构中该节点所在行向后相邻的节点,任一个节点的下向指针指向跳表结构中该节点所在列向下相邻的节点;则跳表结构中,每一个头节点的后向指针的指向均为该行的空节点,每个头节下向指针的指向为其下一行的头节点,最后一行头节点的下向指针为空;
B、从步骤2中的数据块中依次取出文件信息,并将一个文件信息对应一列中的n个节点作为插入的节点,其中n在1和MAXLEVEL之间随机选择;
C、当要向跳表结构中插入第一列节点时,将该列节点插入到头节点的后一列,其中n个节点的排列方式为从该列的最后一行依次向上排列;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京信息科技大学;北京奥米菲克科技有限公司,未经北京信息科技大学;北京奥米菲克科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310409275.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:声屏障螺栓紧固设备
- 下一篇:一种渐进最优的三角网格重复顶点快速去除方法