一种目录创建、查询和删除方法及装置的制作方法

文档序号:6585396阅读:96来源:国知局
专利名称:一种目录创建、查询和删除方法及装置的制作方法
技术领域
本发明涉及文件系统技术领域,尤其涉及一种目录创建、查询和删除方法及装置。
背景技术
目前,现有技术中的fat文件系统以文件分配表管理整个磁盘的簇(扇区),以目录文件中保存固定格式的条目来表示本目录中的基本文件和子目录,固定格式的条目中记录了对应基本文件或子目录的起始簇,即记录了基本文件和子目录的文件头信息,然后由文件分配表中的簇链实现文件系统的存储空间管理。 fat文件系统由于其中文件和目录的树状结构,使其在进行整个目录的操作时往往需要进行递归遍历,对内存需求较大,且速度较慢。 现有技术中的ISO文件系统不同于普通的fat文件系统,它有其自有特性,主要表现在对文件名的限制DF(Dedicated File,专用文件,即目录)有一个可选的应用标示符AID(A卯lication IDentif ier) , AID要求在整个ISO文件系统中是唯一的,对于ISO文件系统来说,这要求在创建带AID名的DF时要进行全盘扫描,由于ISO文件系统本身的EF(Elementary File,基本文件)和DF为树状结构,进行全盘扫描必然要对整个树状结构进行遍历查询,用以确定是否已经有同名DF存在。对树状结构进行遍历查询时对堆栈或全局变量的使用量会显著增加,导致查询速度较慢。 在删除DF时,同样由于ISO文件系统本身的树状结构,在删除一个DF时要先删除其下级的所有EF和DF,所以形成了一个递归,要进行深度优先的后序遍历才可以进行删除操作,否则无法正常释放被删除掉的EF和DF原来所占空间,会造成"空间泄漏"。而进行当前DF中所有内容(递归地包括其下所有子DF的内容)的递归遍历也需要较大内存,速度较慢。

发明内容
本发明实施例提供一种目录创建、查询和删除方法及装置,相比现有技术,用以提
高对文件系统中的目录进行操作的速度。 本发明实施例提供一种目录创建方法,包括 按照先后顺序扫描指定目录中的条目,并记录在当前已扫描的条目中所述指定目录的子目录所在条目的数量; 当记录的数量与所述指定目录的所有子目录的数量相等时,在所述指定目录的最
后一个子目录所在条目的下一个空闲条目中,创建所述指定目录的新子目录; 设置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目
录的前趋目录更新为创建的新子目录。 所述方法,还包括 设置创建的新子目录的后继目录为所述指定目录,并将所述指定目录的原前趋目录的后继目录更新为创建的新子目录。
本发明实施例还提供一种目录创建方法,包括 按照先后顺序扫描指定目录中的条目,确定出第一个空闲条目,并记录在当前已
扫描的条目中所述指定目录的子目录所在条目的数量; 在所述第一个空闲条目中创建所述指定目录的新子目录; 当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目录更新为创建的新子目录; 当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的前趋目录为已扫描的所述指定目录的子目录中的最后一个子目录,并将原前趋目录为所述最后一个子目录的目录的前趋目录更新为创建的新子目录;
当记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的前趋目录为所述指定目录的最终左子目录的原前趋目录,并将所述最终左子目录的前趋目录更新为创建的新子目录;其中,所述最终左子目录不存在下级目录,且其各上级目录为所述指定目录的各下级目录在每级目录中的第一个目录。
所述方法,还包括 当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的后继目录为所述指定目录,并将所述指定目录的原前趋目录的后继目录更新为创建的新子目录; 当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的后继目录为所述最后一个子目录的原后继目录,并所述最后一个子目录的后继目录更新为创建的新子目录; 当记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的后继目录为所述最终左子目录,并将所述最终左子目录的原前趋目录的后继目录更新为创建的新子目录。 本发明实施例还提供一种基于上述方法创建目录的目录查询方法,包括
步骤A :判断当前目录是否为被查询目录; 步骤B :如果是,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的前趋目录作为更新后的当前目录,执行步骤A。 本发明实施例还提供一种基于上述方法创建目录的目录查询方法,包括
步骤C :判断当前目录是否为被查询目录; 步骤D :如果是,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的后继目录作为更新后的当前目录,执行步骤C。
本发明实施例还提供一种基于上述方法创建目录的目录删除方法,包括
步骤E :定位到待删除目录,并设定所述待删除目录的最终左子目录为当前目录;其中,所述待删除目录的最终左子目录不存在下级目录,且其各上级目录为所述待删除目录的各下级目录在每级目录中的第一个目录; 步骤F :删除所述当前目录,并判断所述当前目录是否为所述待删除目录; 步骤G:如果是,将所述待删除目录的最终左子目录的前趋目录作为所述待删除
目录的后继目录的更新后的前趋目录,并将所述待删除目录的后继目录作为所述待删除目录的最终左子目录的前趋目录的更新后的后继目录;否则,将所述当前目录的后继目录作为更新后的当前目录,执行步骤F。 本发明实施例还提供一种目录创建装置,包括 第一扫描单元,用于按照先后顺序扫描指定目录的文件体中的条目,并记录在当前已扫描的条目中所述指定目录的子目录所在条目的数量; 第一创建单元,用于当记录的数量与所述指定目录的所有子目录的数量相等时,在所述指定目录的最后一个子目录所在条目的下一个空闲条目中,创建所述指定目录的新子目录; 第一设置单元,用于设置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目录更新为创建的新子目录。 所述第一设置单元,还用于设置创建的新子目录的后继目录为所述指定目录,并
将所述指定目录的原前趋目录的后继目录更新为创建的新子目录。 本发明实施例还提供一种目录创建装置,包括 第二扫描单元,用于按照先后顺序扫描指定目录的文件体中的条目,确定出第一个空闲条目,并记录在当前已扫描的条目中所述指定目录的子目录所在条目的数量;
第二创建单元,用于在所述第一个空闲条目中创建所述指定目录的新子目录;
第二设置单元,用于当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目录更新为创建的新子目录;以及当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的前趋目录为已扫描的所述指定目录的子目录中的最后一个子目录,并将原前趋目录为所述最后一个子目录的目录的前趋目录更新为创建的新子目录;以及当所述记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的前趋目录为所述指定目录的最终左子目录的原前趋目录,并将所述最终左子目录的前趋目录更新为创建的新子目录;其中,所述最终左子目录不存在下级目录,且其各上级目录为所述指定目录的各下级目录在每级目录中的第一个目录。 所述第二设置单元,还用于当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的后继目录为所述指定目录,并将所述指定目录的原前趋目录的后继目录更新为创建的新子目录;以及当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的后继目录为所述最后一个子目录的原后继目录,并将所述最后一个子目录的后继目录更新为创建的新子目录;以及当记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的后继目录为所述最终左子目录,并将所述最终左子目录的原前趋目录的后继目录更新为创建的新子目录。 本发明实施例还提供一种基于上述装置创建目录的目录查询装置,包括
第一判断单元,用于判断当前目录是否为被查询目录; 第一定位单元,用于当所述第一判断单元的判断结果为是时,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的前趋目录作为更新后的当前目录,并通知所述第一判断单元进行判断。
本发明实施例还提供一种基于上述装置创建目录的目录查询装置,包括
第二判断单元,用于判断当前目录是否为被查询目录; 第二定位单元,用于当所述第二判断单元的判断结果为是时,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的后继目录作为更新后的当前目录,并通知所述第二判断单元进行判断。 本发明实施例还提供一种基于上述装置创建目录的目录删除装置,包括
定位确定单元,用于定位到待删除目录,并设定所述待删除目录的最终左子目录为当前目录;其中,所述待删除目录的最终左子目录不存在下级目录,且其各上级目录为所述待删除目录的各下级目录在每级目录中的第一个目录; 删除判断单元,用于删除所述当前目录,并判断所述当前目录是否为所述待删除目录; 设置单元,用于当所述删除判断单元的判断结果为是时,将所述待删除目录的最终左子目录的前趋目录作为所述待删除目录的后继目录的更新后的前趋目录,并将所述待删除目录的后继目录作为所述待删除目录的最终左子目录的前趋目录的更新后的后继目录;否则,将所述当前目录的后继目录作为更新后的当前目录,并通知所述删除判断单元进行删除和判断。 本发明实施例提供的方法中,在创建目录时,为创建的每个目录设置了前趋目录,并保证了每个目录的前趋目录唯一,即将已创建的各目录通过各自的前趋目录形成了目录链表,使得在目录查询时,可以通过各目录的前趋目录依次进行目录查询的遍历,不再需要针对树状结构的递归遍历,所以减少了系统内存的使用,进而提高了目录查询的速度;且进一步的还为创建的每个目录设置后继目录,并保证了每个目录的后继目录唯一,使得在目录删除时,可以首先定位待删除目录的最终左子目录,并从最终左子目录开始,通过其后继目录依次删除其上级的目录,至删除待删除目录为止,相比现有技术,同样不再需要针对树状结构的递归遍历,减少了系统内存的使用,进而提高了目录删除的速度。


图1为本发明实施例一提供的目录创建方法的流程 图2为本发明实施例中举例的目录的树状结构示意图; 图3为本发明实施例中图2所示的目录结构的根目录的文件体的结构示意 图4、图5为本发明实施例中初始目录链表的结构示意 图6为本发明实施例一提供的目录创建方法的流程图; 图7为采用本发明实施例一提供的目录创建方法创建目录后形成的目录链表的结构示意图; 图8为采用本发明实施例一提供的目录创建方法在图2所示目录结构中的根目录下创建目录后形成的目录链表的结构示意图; 图9、图10为本发明实施例二提供的目录创建方法的流程图; 图11、12为采用本发明实施例二提供的目录创建方法在图2所示目录结构中的根目录下创建目录后形成的目录链表的结构示意图; 图13、图14为本发明实施例三提供的目录查询方法的流程 图15为本发明实施例四提供的目录删除方法的流程图; 图16为采用本发明实施例四提供的木路删除方法删除图2所示目录结构中的目录2后形成的目录链表的结构示意图; 图17为本发明实施例五提供的目录创建装置的结构示意图; 图18为本发明实施例六提供的目录创建装置的结构示意图; 图19为本发明实施例七提供的目录查询装置的结构示意图; 图20为本发明实施例八提供的目录查询装置的结构示意图; 图21为本发明实施例九提供的目录删除装置的结构示意图。
具体实施方式
实施例一 本发明实施例一提供一种目录创建方法,如图1所示,包括 步骤S101、按照先后顺序扫描指定目录中的条目,并记录在当前已扫描的条目中指定目录的子目录所在条目的数量。 步骤S102、当记录的该数量与指定目录的所有子目录的数量相等时,在指定目录的最后一个子目录所在条目的下一个空闲条目中,创建指定目录的新子目录。
步骤S103、设置创建的新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新子目录。 较佳的,在上述步骤S103中,还可以包括设置创建的新子目录的后继目录为指
定目录,并将指定目录的原前趋目录的后继目录更新为创建的新子目录。 本发明实施例一中,采用上述创建方法创建目录时,对于创建的每个目录均设置
了对应的前趋目录和后继目录,且每个目录的前趋目录和后继目录均唯一,前趋目录即表
示了一个目录指向的目录,后继目录则表示了指向该目录的目录,通过设置唯一的前趋目
录和后继目录,使得已创建的各目录形成一个目录链表。 以图2所示的目录的树状结构示意图为例,其中,根目录下每级目录在其父目录的文件体中出现的先后顺序以从左至右为例。目录1、目录2和目录8为根目录的子目录,根目录的文件体的结构以图3为例,根目录的文件体由固定格式的多个条目组成,其中,每个条目对应创建了目录、基本文件(即非目录文件)或为空闲,即每个条目中存储了目录的文件头、基本文件的文件头或为空,图3中,目录1、目录2和目录8分别位于根目录的条目1、条目3和条目6,从中可知,目录1、目录2和目录8在根目录的文件体中出现的顺序与其各自所在条目的顺序相同。每个目录的文件头中还对应记录该目录的前趋目录和后继目录,例如可以为前趋目录和后继目录的地址,以及该目录的子目录的数量。根目录下每条目录的文件体的结构与根目录的文件体结构相似,即本发明实施例中,每个目录的文件头中均对应记录了该目录的前趋目录和后继目录,以及该目录的子目录的数量,在此不再进行详细描述。 本发明实施例一中,在初始化目录链表时,可以采取如下两种方式
—种方式为设定根目录的初始的前趋目录为根目录自身,并记录根目录的子目录的数量为O ;以及还可以设定根目录的初始的后继目录也为根目录自身,通过这样的设置,形成初始目录链表,如图4所示。
另一种方式为可以在创建根目录的第一个子目录时,设定根目录的初始的前趋目录为其第一个子目录,并设定其第一个子目录的前趋目录为根目录,并记录根目录的子目录的数量为l,记录其第一个子目录的子目录的数量为O;以及还可以设定根目录的初始的后继目录为其第一个子目录,并设定其第一个子目录的后继目录为根目录;通过这样的设置,形成初始目录链表,如图5所示。 本发明实施例一中,根据当前目录链表中各目录的前趋目录、后继目录以及记录的其子目录的数量,进行目录的创建,其详细流程如图6所示,包括 步骤S601、确定并定位到指定目录,该指定目录为将要创建的目录的父目录;并设定指定目录的第一个条目为当前条目;以及记录已扫描到的指定目录的子目录的数量为零。 步骤S602、判断当前条目是否为目录所在条目,如果是,进入步骤S604 ;否则,进入步骤S603。 步骤S603、设定当前条目的下一个条目为更新后的当前条目;本步骤中,如果变更当前条目失败,则本次目录创建失败,流程结束。这种失败的原因可以是来自于文件系统本身,比如当前条目已经指定目录中最后的条目,并且由于磁盘空间限制不能再申请新的空间等。 步骤S604、将已扫描到的指定目录的子目录的数量加1。 步骤S605、判断已扫描到的指定目录的子目录的数量是否等于记录的指定目录的所有子目录的数量,如果相等,进入步骤S606 ;否则,进入步骤S603。 步骤S606、已扫描到的指定目录的子目录的数量等于记录的指定目录的所有子目录的数量,表示已扫描出指定目录的全部子目录,然后定位到条目的下一个空闲条目。
步骤S607、在当前条目的下一个空闲条目中,创建指定目录的新子目录,具体可以包括现有技术中创建目录的相关步骤;以及设置创建的新子目录的前趋目录为指定目录的原前趋目录,并设置创建的新子目录的后继目录为指定目录;以及将指定目录的前趋目录更新为创建的新子目录,并将指定目录的原前趋目录的后继目录更新为创建的新子目录;以及还记录创建的新子目录的所有子目录的数量为0 ;并更新记录的指定目录的所有子目录的数量为原数量加1。 采用本发明上述实施例一提供的目录创建方法,创建图2所示结构中的各目录
后,可以获得如图7所示的目录链表结构,从图7中可见,每个目录均指向其前趋目录和其
后继目录,例如目录8的前趋目录为目录2,其后继目录为根目录,且同一 目录的各子目录
在目录链表中的先后顺序与在其父目录的文件体中出现的先后顺序相同。 采用本发明上述实施例一提供的目录创建方法,在图2所示结构的根目录下创建
新的子目录后,目录链表结构如图8所示,从图8中可见,新创建的目录X插入到根目录与
目录8之间,也可以说是插入根目录之前,目录X的前趋目录为目录8,其后继目录为根目
录,且根目录的前趋目录更新为目录X,目录8的后继目录更新为目录X。 采用本发明上述实施例一提供的目录创建方法,实现了创建的各目录的目录链表
结构,且可以保证同一目录的各子目录在目录链表中的先后顺序与在其父目录的文件体中
出现的先后顺序相同,但由于同一目录的各子目录的在其父目录的文件体中出现的先后顺
序与各子目录的创建顺序相同,所以,当之前创建的新子目录或基本文件被删除,其所在条
10目变更为空闲条目时,而无法在该空闲条目中进行后续目录的创建,导致该空闲条目使用
的浪费,为解决这一问题,本发明在下述实施例二中再提供一种目录创建方法。
实施例二 本发明实施例二提供一种目录创建方法,如图9所示,包括 步骤S901、按照先后顺序扫描指定目录中的条目,确定出第一个空闲条目,并记录
在当前已扫描的条目中指定目录的子目录所在条目的数量。 步骤S902、在确定出的第一个空闲条目中创建指定目录的新子目录。 步骤S903、当记录的数量与指定目录的所有原子目录的数量相等时,设置创建的
新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新
子目录; 当记录的数量与指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的前趋目录为已扫描的指定目录的子目录中的最后一个子目录,并将原前趋目录为该最后一个子目录的目录的前趋目录更新为创建的新子目录; 当记录的数量与指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的前趋目录为指定目录的最终左子目录的原前趋目录,并将指目录的最终左子目录的前趋目录更新为创建的新子目录;其中,指定目录的最终左子目录不存在下级目录,且其各上级目录为指定目录的各下级目录在每级目录中的第一个目录。
较佳的,在上述步骤S903中,还可以包括 当记录的数量与指定目录的所有原子目录的数量相等时,设置创建的新子目录的后继目录为指定目录,并将指定目录的原前趋目录的后继目录更新为创建的新子目录;
当记录的数量与指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的后继目录为该最后一个子目录的原后继目录,并将该最后一个子目录的后继目录更新为创建的新子目录; 当记录的数量与指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的后继目录为指定目录的最终左子目录,并将指定目录的最终左子目录的原前趋目录的后继目录更新为创建的新子目录。 本发明实施例二中,与上述实施例一 中相似,对于创建的每个目录均设置了对应的前趋目录和后继目录,且每个目录的前趋目录和后继目录均唯一,前趋目录即表示了一个目录指向的目录,后继目录则表示了指向该目录的目录,通过设置唯一的前趋目录和后继目录,使得已创建的各目录形成一个目录链表。 本发明实施例二中,初始化目录链表的方式可以与上述实施例一中初始化目录链表的方式相同,在此不再做详细描述。 本发明实施例二中,根据当前目录链表中各目录的前趋目录、后继目录以及记录的其子目录的数量,进行目录的创建,其详细流程如图10所示,包括 步骤S1001、确定并定位到指定目录,该指定目录为将要创建的目录的父目录;并设定指定目录的第一个条目为当前条目;以及记录已扫描到的指定目录的子目录的数量为零。 步骤S1002、判断当前条目是否为空闲条目,如果是,进入步骤S1006 ;否则,进入步骤S1003。
步骤S1003、判断当前条目是否为目录所在条目,如果是,进入步骤S1005 ;否则,进入步骤S1004。 步骤S1004、设定当前条目的下一个条目为更新后的当前条目;本步骤中,如果变更当前条目失败,则本次目录创建失败,流程结束。这种失败的原因可以是来自于文件系统本身,比如当前条目已经指定目录中最后的条目,并且由于磁盘空间限制不能再申请新的空间等。 步骤S1005、记录位于当前条目的目录的位置,并将已扫描到的指定目录的子目录的数量加1。 步骤S1006、判断已扫描到的指定目录的子目录的数量是否等于记录的指定目录
的所有子目录的数量,如果相等,进入步骤S1007 ;否则,进入步骤S1008。 步骤S1007、此时,表示指定目录的第一个空闲条目在指定目录的最后一个子目录
所在条目之后,因此,将新创建的目录插入指定目录与指定目录的前趋目录之间,具体为 在当前条目中创建指定目录的子目录,具体可以包括现有技术中创建目录的相关
步骤;以及设置创建的新子目录的前趋目录为指定目录的原前趋目录,并设置创建的新子
目录的后继目录为指定目录;以及将指定目录的前趋目录更新为创建的新子目录,并将指
定目录的原前趋目录的后继目录更新为创建的新子目录;以及还记录创建的新子目录的所
有子目录的数量为O ;并更新记录的指定目录的所有子目录的数量为原数量加1。 步骤S1008、判断已扫描到的指定目录的子目录的数量是否为0,如果不为0,进入
步骤S1009 ;否则,进入步骤SIOIO。 步骤S1009、此时,表示指定目录的第一个空闲条目在已扫描的指定目录的子目录中的最后一个子目录(即上述步骤S1005中最后记录的目录)所在条目之后,因此,将新创建的目录插入到该最后记录的目录与该最后记录的目录的后继目录之间,具体为
在当前条目中创建指定目录的子目录,具体可以包括现有技术中创建目录的相关步骤;以及设置创建的新子目录的前趋目录为已扫描的指定目录的子目录中的最后一个子目录(最后记录的目录),并设置创建的新子目录的后继目录为该最后记录的目录的原后继目录;以及将原前趋目录为该最后记录的目录的目录的前趋目录更新为创建的新子目录,并将该最后记录的目录的后继目录更新为创建的新子目录;以及还记录创建的新子目录的所有子目录的数量为0 ;并更新记录的指定目录的所有子目录的数量为原数量加1。
步骤S1010、此时,表示指定目录的第一个空闲条目在指定目录的第一个子目录所在条目之前,因此,将新创建的目录插入到指定目录的最终左子目录与该最终左子目录的前趋目录之间,其中, 一个目录的最终左子目录不存在下级目录,且其各上级目录为该目录的各下级目录在每级目录中的第一个目录,也就是说,循环地从一个目录文件体中查找第一个子目录,直到再也没有子目录为止,则最后查找到的第一个子目录即为该目录的最终左子目录,例如,图2所示目录结构中,根目录的最终左子目录为目录5,目录2的最终左子目录为目录3。 本步骤中创建目录具体为 在当前条目中创建指定目录的子目录,具体可以包括现有技术中创建目录的相关步骤;以及设置创建的新子目录的前趋目录为指定目录的最终左子目录的原前趋目录,并设置创建的新子目录的后继目录为指定目录的最终左子目录;以及将指定目录的最终左子目录的前趋目录更新为创建的新子目录,并将指定目录的最终左子目录的原前趋目录的后继目录更新为创建的新子目录;以及还记录创建的新子目录的所有子目录的数量为O ;并更新记录的指定目录的所有子目录的数量为原数量加1 。其中,指定目录的最终左子目录的定位可以采用现有技术的方法,在此不再进行详细描述。 采用本发明上述实施例二提供的目录创建方法,创建图2所示结构中的各目录后,也可以获得如图7所示的目录链表结构,且同样可以确保同一目录的各子目录在目录链表中的先后顺序与在其父目录的文件体中出现的先后顺序相同。 采用本发明上述实施例二提供的目录创建方法,在图2所示结构的根目录下创建新的子目录时 如果是执行上述步骤S1007进行创建,则创建后的目录链表结构与图8所示相同; 如果是执行上述步骤S1009进行创建,假设此时已扫描到的指定目录的子目录的数量为1,则创建后的目录链表结构如图11所示,从图11中可见,新创建的目录X插入到目录1与目录3之间,也可以说是插入目录1之后,目录X的前趋目录为目录1,其后继目录为目录3,且目录1的后继目录更新为目录X,目录3的前趋目录更新为目录X;
如果是执行上述步骤S1010进行创建,则创建后的目录链表结构如图12所示,从图12中可见,新创建的目录X插入到目录5 (指定目录根目录的最终左子目录)与根目录之间,也可以说是插入到目录5之前,目录X的前趋目录为根目录,其后继目录为目录5,且目录5的前趋目录更新为目录X,根目录的后继目录更新为目录X。 采用本发明上述实施例二提供的目录创建方法,不仅实现了创建的各目录的目录链表结构,保证同一 目录的各子目录在目录链表中的先后顺序与在其父目录的文件体中出现的先后顺序相同,且当指定目录的最后一个子目录所在条目之前存在空闲条目时,可以在之前的空闲条目中创建新的目录,合理利用存储空间。
实施例三 基于上述实施例一和实施例二提供的目录创建方法创建的目录,本发明实施例三还提供一种目录查询方法,如图13所示为根据目录的前趋目录进行查询的流程,包括
步骤S1301、确定查询的起始目录,例如,可以确定从根目录开始查询,并设定起始目录为当前目录。 步骤S1302、判断当前目录是否为被查询目录,如果是,进入步骤S1303 ;否则,进入步骤S1304。 步骤S1303、定位当前目录为被查询目录。 步骤S 1304、设定当前目录的前趋目录为更新后的当前目录,并进入步骤S1302。本步骤中,如果当前目录的前趋目录为上述步骤S1301中确定的起始目录,则表示查找失败,流程结束。 本发明实施例中还可以根据目录的后继目录进行查询,其流程如图14所示,包括 步骤S1401、确定查询的起始目录,例如,可以确定从根目录开始查询,并确定起始目录为当前目录。 步骤S1402、判断当前目录是否为被查询目录,如果是,进入步骤S1403 ;否则,进入步骤S1404。 步骤S1403、定位当前目录的后继目录为被查询目录。 步骤S1404、设定当前目录的后继目录为更新后的当前目录,并进入步骤S1402。本步骤中,如果当前目录的前趋目录为上述步骤S1401中确定的起始目录,则表示查找失败,流程结束。 采用上述实施例一和实施例二提供的目录创建方法创建的目录,由于通过每个目录的前趋目录或后继目录,形成了目录链表,因此,最多通过一次目录链表的遍历查询即可查询到被查询目录,相比现有技术,不再需要针对树状目录结构的递归遍历进行查询,减少了系统内存的使用,进而提高了目录查询的速度。
实施例四 基于上述实施例一和实施例二提供的目录创建方法创建的目录,本发明实施例四还提供一种目录删除方法,如图15所示,包括 步骤S1501、定位待删除目录,具体可以通过现有技术中的方法,或上述实施例三中的目录查询方法进行查询定位。本步骤中还记录待删除目录的后继目录。
步骤S1502、定位待删除目录的最终左子目录,并设定该最终左子目录为当前目录。本步骤中还记录该最终左子目录的前趋目录。 步骤S1503、删除当前目录。具体为删除当前目录下所有基本文件再删除当前目录本身,包括现有技术中删除目录包括的各步骤,例如,回收当前目录的下级空子目录和基本文件所占用的簇,并在当前目录的父目录的文件体中删除当前目录的信息,如在父目录的文件体中当前目录的文件头信息。 步骤S1504、判断删除的当前目录是否为待删除目录,如果是,进入步骤S1506 ;否则,进入步骤S1505。 步骤S1505、更新当前目录,具体为设定当前目录的后继目录作为更新后的当前目录,进入步骤S1503。 步骤S1506、更新待删除目录的后继目录的前趋目录,具体为将上述步骤S1502中记录的待删除目录的最终左子目录的前趋目录作为待删除目录的后继目录的更新后的前趋目录;更新待删除目录的最终左子目录的前趋目录的后继目录,具体为将上述步骤S1501中记录的待删除目录的后继目录作为待删除目录的最终左子目录的前趋目录的更新后的后继目录;以及更新记录的待删除目录的父目录的所有子目录的数量为原数量减l。
至此,完成目录的删除,以删除图2所示目录结构中的目录2为例,删除过程中,首先定位并删除目录2的最终左子目录目录3,然后删除目录3的后继目录(目录6),然后删除目录6的后继目录(目录2),至此最近一次被删除的目录为待删除的目录2,则更新目录2的后继目录(目录8)的前趋目录为目录3的前趋目录(目录1),更新目录3的前趋目录(目录l)的后继目录为目录2的后继目录(目录8),并更新记录的目录2的父目录(根目录)的子目录的数量为2,删除后的目录链表结构如图16所示。 采用本发明上述实施例四提供的目录删除方法删除目录,通过定位待删除目录的最终左子目录,并从最终左子目录开始,通过其后继目录依次删除其上级的目录,至删除待删除目录为止,相比现有技术,同样不再需要针对树状目录结构的递归遍历,减少了系统内存的使用,进而提高了目录删除的速度。
实施例五 基于同一发明构思,根据本发明上述实施例一提供的目录创建方法,相应地,本发明实施例五还提供了一种目录创建装置,其结构示意图如图17所示,包括
第一扫描单元1701,用于按照先后顺序扫描指定目录的文件体中的条目,并记录在当前已扫描的条目中指定目录的子目录所在条目的数量; 第一创建单元1702,用于当记录的数量与指定目录的所有子目录的数量相等时,在指定目录的最后一个子目录所在条目的下一个空闲条目中,创建指定目录的新子目录;
第一设置单元1703,用于设置创建的新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新子目录。 较佳的,上述第一设置单元1703,还用于设置创建的新子目录的后继目录为指定
目录,并将指定目录的原前趋目录的后继目录更新为创建的新子目录。
实施例六 基于同一发明构思,根据本发明上述实施例二提供的目录创建方法,相应地,本发明实施例六还提供了一种目录创建装置,其结构示意图如图18所示,包括
第二扫描单元1801,用于按照先后顺序扫描指定目录的文件体中的条目,确定出第一个空闲条目,并记录在当前已扫描的条目中指定目录的子目录所在条目的数量;
第二创建单元1802,用于在第一个空闲条目中创建指定目录的新子目录;
第二设置单元1803,用于当记录的数量与指定目录的所有原子目录的数量相等时,设置创建的新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新子目录;以及当记录的数量与指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的前趋目录为已扫描的指定目录的子目录中的最后一个子目录,并将原前趋目录为该最后一个子目录的目录的前趋目录更新为创建的新子目录;以及当记录的数量与指定目录的所有原子目录的数量不相等,且为零时,设置创建的新子目录的前趋目录为指定目录的最终左子目录的原前趋目录,并将该最终左子目录的前趋目录更新为创建的新子目录;其中,该最终左子目录不存在下级目录,且其各上级目录为所述指定目录的各下级目录在每级目录中的第一个目录 较佳的,上述第二设置单元1803,还用于当记录的数量与指定目录的所有原子目录的数量相等时,设置创建的新子目录的后继目录为指定目录,并将指定目录的原前趋目录的后继目录更新为创建的新子目录;以及当记录的数量与指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录的后继目录为该最后一个子目录的原后继目录,并将该最后一个子目录的后继目录更新为创建的新子目录;以及当记录的数量与指定目录的下级子目录的数量不相等,且为零时,设置创建的新子目录的后继目录为该最终左子目录,并将该最终左子目录的原前趋目录的后继目录更新为创建的新子目录。
实施例七 基于同一发明构思,根据本发明上述实施例三提供的目录创建方法,相应地,本发明实施例七还提供了一种目录查询装置,其结构示意图如图19所示,包括
第一判断单元1901,用于判断当前目录是否为被查询目录; 第一定位单元1902,用于当上述第一判断单元1901的判断结果为是时,则定位当前目录为被查询目录;否则,将当前目录的前趋目录作为更新后的当前目录,并通知上述第一判断单元1901进行判断。 较佳的,上述第一判断单元1901,还用于将根目录作为当前目录的初始目录。
实施例八 基于同一发明构思,根据本发明上述实施例三提供的目录创建方法,相应地,本发明实施例八还提供了一种目录查询装置,其结构示意图如图20所示,包括
第二判断单元2001,用于判断当前目录是否为被查询目录; 第二定位单元2002,用于当上述第二判断单元2001的判断结果为是时,则定位当前目录为被查询目录;否则,将当前目录的后继目录作为更新后的当前目录,并通知上述第二判断单元2002进行判断。 较佳的,上述第二判断单元2001,还用于将根目录作为所述当前目录的初始目录。
实施例九 基于同一发明构思,根据本发明上述实施例四提供的目录创建方法,相应地,本发
明实施例九还提供了一种目录删除装置,其结构示意图如图21所示,包括 定位确定单元2101,用于定位到待删除目录,并设定待删除目录的最终左子目录
为当前目录;其中,待删除目录的最终左子目录不存在下级目录,且其各上级目录为待删除
目录的各下级目录在每级目录中的第一个目录; 删除判断单元2102,用于删除当前目录,并判断当前目录是否为待删除目录;
设置单元2103,用于当上述删除判断单元2102的判断结果为是时,将待删除目录的最终左子目录的前趋目录作为待删除目录的后继目录的更新后的前趋目录,并将待删除目录的后继目录作为待删除目录的最终左子目录的前趋目录的更新后的后继目录;否则,将当前目录的后继目录作为更新后的当前目录,并通知上述删除判断单元2101进行删除和判断。 综上所述,本发明实施例提供的方案,包括按照先后顺序扫描指定目录中的条目,并记录在当前已扫描的条目中指定目录的子目录所在条目的数量;并当记录的数量与指定目录的所有子目录的数量相等时,在指定目录的最后一个子目录所在条目的下一个空闲条目中,创建指定目录的新子目录;以及设置创建的新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新子目录。采用本发明实施例提供的方案,相比现有技术,提高了对文件系统中的目录进行操作的速度。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种目录创建方法,其特征在于,包括按照先后顺序扫描指定目录中的条目,并记录在当前已扫描的条目中所述指定目录的子目录所在条目的数量;当记录的数量与所述指定目录的所有子目录的数量相等时,在所述指定目录的最后一个子目录所在条目的下一个空闲条目中,创建所述指定目录的新子目录;设置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目录更新为创建的新子目录。
2. 如权利要求l所述的方法,其特征在于,还包括设置创建的新子目录的后继目录为所述指定目录,并将所述指定目录的原前趋目录的 后继目录更新为创建的新子目录。
3. —种目录创建方法,其特征在于,包括按照先后顺序扫描指定目录中的条目,确定出第一个空闲条目,并记录在当前已扫描 的条目中所述指定目录的子目录所在条目的数量;在所述第一个空闲条目中创建所述指定目录的新子目录;当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的 前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目录更新为创建的新子 目录;当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建 的新子目录的前趋目录为已扫描的所述指定目录的子目录中的最后一个子目录,并将原前 趋目录为所述最后一个子目录的目录的前趋目录更新为创建的新子目录;当记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的 新子目录的前趋目录为所述指定目录的最终左子目录的原前趋目录,并将所述最终左子目 录的前趋目录更新为创建的新子目录;其中,所述最终左子目录不存在下级目录,且其各上 级目录为所述指定目录的各下级目录在每级目录中的第一个目录。
4. 如权利要求3所述的方法,其特征在于,还包括当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的 后继目录为所述指定目录,并将所述指定目录的原前趋目录的后继目录更新为创建的新子 目录;当记录的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建 的新子目录的后继目录为所述最后一个子目录的原后继目录,并所述最后一个子目录的后 继目录更新为创建的新子目录;当记录的数量与所述指定目录的所有原子目录的数量不相等,且为零时,设置创建的 新子目录的后继目录为所述最终左子目录,并将所述最终左子目录的原前趋目录的后继目 录更新为创建的新子目录。
5. —种基于权利要求l-4任一所述方法创建目录的目录查询方法,其特征在于,包括 步骤A :判断当前目录是否为被查询目录;步骤B :如果是,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的前 趋目录作为更新后的当前目录,执行步骤A。
6. 如权利要求5所述的方法,其特征在于,所述当前目录的初始目录为根目录。
7. —种基于权利要求2或4所述方法创建目录的目录查询方法,其特征在于,包括步骤C:判断当前目录是否为被查询目录;步骤D:如果是,则定位所述当前目录为所述被查询目录;否则,将所述当前目录的后 继目录作为更新后的当前目录,执行步骤C。
8. 如权利要求7所述的方法,其特征在于,所述当前目录的初始目录为根目录。
9. 一种基于权利要求2或4所述方法创建目录的目录删除方法,其特征在于,包括步骤E :定位到待删除目录,并设定所述待删除目录的最终左子目录为当前目录;其 中,所述待删除目录的最终左子目录不存在下级目录,且其各上级目录为所述待删除目录 的各下级目录在每级目录中的第一个目录;步骤F :删除所述当前目录,并判断所述当前目录是否为所述待删除目录; 步骤G :如果是,将所述待删除目录的最终左子目录的前趋目录作为所述待删除目录 的后继目录的更新后的前趋目录,并将所述待删除目录的后继目录作为所述待删除目录的 最终左子目录的前趋目录的更新后的后继目录;否则,将所述当前目录的后继目录作为更 新后的当前目录,执行步骤F。
10. —种目录创建装置,其特征在于,包括第一扫描单元,用于按照先后顺序扫描指定目录的文件体中的条目,并记录在当前已 扫描的条目中所述指定目录的子目录所在条目的数量;第一创建单元,用于当记录的数量与所述指定目录的所有子目录的数量相等时,在所述指定目录的最后一个子目录所在条目的下一个空闲条目中,创建所述指定目录的新子目 录;第一设置单元,用于设置创建的新子目录的前趋目录为所述指定目录的原前趋目录, 并将所述指定目录的前趋目录更新为创建的新子目录。
11. 如权利要求io所述的装置,其特征在于,所述第一设置单元,还用于设置创建的新子目录的后继目录为所述指定目录,并将所述指定目录的原前趋目录的后继目录更新为创 建的新子目录。
12. —种目录创建装置,其特征在于,包括第二扫描单元,用于按照先后顺序扫描指定目录的文件体中的条目,确定出第一个空 闲条目,并记录在当前已扫描的条目中所述指定目录的子目录所在条目的数量; 第二创建单元,用于在所述第一个空闲条目中创建所述指定目录的新子目录; 第二设置单元,用于当记录的数量与所述指定目录的所有原子目录的数量相等时,设 置创建的新子目录的前趋目录为所述指定目录的原前趋目录,并将所述指定目录的前趋目 录更新为创建的新子目录;以及当记录的数量与所述指定目录的所有原子目录的数量不相 等,且不为零时,设置创建的新子目录的前趋目录为已扫描的所述指定目录的子目录中的 最后一个子目录,并将原前趋目录为所述最后一个子目录的目录的前趋目录更新为创建的 新子目录;以及当所述记录的数量与所述指定目录的所有原子目录的数量不相等,且为零 时,设置创建的新子目录的前趋目录为所述指定目录的最终左子目录的原前趋目录,并将 所述最终左子目录的前趋目录更新为创建的新子目录;其中,所述最终左子目录不存在下 级目录,且其各上级目录为所述指定目录的各下级目录在每级目录中的第一个目录。
13. 如权利要求12所述的装置,其特征在于,所述第二设置单元,还用于当记录的数量与所述指定目录的所有原子目录的数量相等时,设置创建的新子目录的后继目录为所述指 定目录,并将所述指定目录的原前趋目录的后继目录更新为创建的新子目录;以及当记录 的数量与所述指定目录的所有原子目录的数量不相等,且不为零时,设置创建的新子目录 的后继目录为所述最后一个子目录的原后继目录,并将所述最后一个子目录的后继目录更 新为创建的新子目录;以及当记录的数量与所述指定目录的所有原子目录的数量不相等, 且为零时,设置创建的新子目录的后继目录为所述最终左子目录,并将所述最终左子目录 的原前趋目录的后继目录更新为创建的新子目录。
14. 一种基于权利要求10-13所述装置创建目录的目录查询装置,其特征在于,包括 第一判断单元,用于判断当前目录是否为被查询目录;第一定位单元,用于当所述第一判断单元的判断结果为是时,则定位所述当前目录为 所述被查询目录;否则,将所述当前目录的前趋目录作为更新后的当前目录,并通知所述第 一判断单元进行判断。
15. 如权利要求14所述的装置,其特征在于,所述第一判断单元,还用于将根目录作为 所述当前目录的初始目录。
16. —种基于权利要求11或13所述装置创建目录的目录查询装置,其特征在于,包括第二判断单元,用于判断当前目录是否为被查询目录;第二定位单元,用于当所述第二判断单元的判断结果为是时,则定位所述当前目录为 所述被查询目录;否则,将所述当前目录的后继目录作为更新后的当前目录,并通知所述第 二判断单元进行判断。
17. 如权利要求16所述的装置,其特征在于,所述第二判断单元,还用于将根目录作为 所述当前目录的初始目录。
18. —种基于权利要求11或13所述装置创建目录的目录删除装置,其特征在于,包括定位确定单元,用于定位到待删除目录,并设定所述待删除目录的最终左子目录为当 前目录;其中,所述待删除目录的最终左子目录不存在下级目录,且其各上级目录为所述待 删除目录的各下级目录在每级目录中的第一个目录;删除判断单元,用于删除所述当前目录,并判断所述当前目录是否为所述待删除目录;设置单元,用于当所述删除判断单元的判断结果为是时,将所述待删除目录的最终左 子目录的前趋目录作为所述待删除目录的后继目录的更新后的前趋目录,并将所述待删除 目录的后继目录作为所述待删除目录的最终左子目录的前趋目录的更新后的后继目录;否 则,将所述当前目录的后继目录作为更新后的当前目录,并通知所述删除判断单元进行删 除和判断。
全文摘要
本发明公开了一种目录创建、查询和删除方法及装置,包括按照先后顺序扫描指定目录中的条目,并记录在当前已扫描的条目中指定目录的子目录所在条目的数量;并当记录的数量与指定目录的所有子目录的数量相等时,在指定目录的最后一个子目录所在条目的下一个空闲条目中,创建指定目录的新子目录;以及设置创建的新子目录的前趋目录为指定目录的原前趋目录,并将指定目录的前趋目录更新为创建的新子目录。采用本发明提供的方法及装置,相比现有技术,提高了对文件系统中的目录进行操作的速度。
文档编号G06F17/30GK101782921SQ20091024397
公开日2010年7月21日 申请日期2009年12月28日 优先权日2009年12月28日
发明者邵进春 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1