目录文档的操作方法、装置、电子设备、可读存储介质
技术领域
本公开涉及目录文件操作领域,更具体地说,涉及一种目录文档的操作方法、装置、电子设备、可读存储介质。
背景技术
目录结构在操作***上十分常见,如利用目录形成树状结构帮助分类整理各种文件、文件夹等。文件夹中可以创建文件、文件夹、移动文件夹、删除文件等,或者在文件夹中查找某一个文件,查询某个文件的目录路径等,这些操作使得用户可以在互联网上享受与本地电脑一样的文件操作。
然而目录的结构可能十分复杂、庞大,例如,若一个文件夹下有很多子文件夹,放置了各种各样的文件;文件夹下有文件夹,且层级关系很深,此时,如何移动、删除文件、快速查找某个文件夹下的全部文件、返回某个文件的路径等,便成为要解决的问题。
发明内容
本公开要解决的技术问题在于,针对现有技术的上述缺陷,提供一种目录文档的操作方法、装置、电子设备、可读存储介质。
本公开解决其技术问题所采用的技术方案是:构造一种目录文档的操作方法,包括以下步骤:
接收客户端发送的目录文档请求,确定目标文档;
接收操作指令;
获取所述目标文档的目录特征值;
以预设规则修改所述目标文档的目录特征值以及所述目标文档所在目录下的所有文档的目录特征值;
其中,所述目标文档包括目标文件夹和/或目标文件,所述目标文档所在的目录为树状结构的目录。
优选地,所述操作指令包括在所述目标文档下新增子文档的指令;
所述目标文档的目录特征值包括用于唯一标识所述目标文档的层级的节点ID和用于标识所述目标文档包含的子文档的数量的节点值;
所述方法还包括:
根据所述操作指令获取所需新增子文档;
根据所获取的新增子文档,确定新增子文档与所述目标文档的层级关系及所需新增的所有子文档的数量;
所述以预设规则修改所述目标文档的目录特征值以及所述目标文档所在目录下的所有文档的目录特征值包括:
根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括删除所述目标文档的指令;所述目标文档的节点值包括节点左值和节点右值;
所述以预设规则修改所述目标文档的目录特征值以及所述目标文档所在目录下的所有文档的目录特征值包括:
根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
查找出所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档;
将所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档和所述目标文档删除;
其中,所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档为所述目标文档包含的子文档。
优选地,所述将所述目标文档及其所包含的所有子文档删除之后包括:
以预设规则,更新所述目标文档的上层文档的节点值、同级文档的节点值以及同级文档所包含的子文档的节点值。
优选地,所述操作指令还包括移动所述目标文档的指令;
所述以预设规则修改所述目标文档的目录特征值以及所述目标文档所在目录下的所有文档的目录特征值包括:
根据所述目标文档的目录特征值,确定所述目标文档的上层文档;
将所述目标文档从所述上层文档中删除,并将所述目标文档移动至指定文档的下层;
以预设规则更新所述目标文档的节点值、所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括获取所述目标文档的路径指令;
所述方法还包括:
根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
查找出所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档,获得所述目标文档的路径;
其中,所述所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档为所述目标文档的路径。
优选地,所述操作指令还包括获取所述目标文档所包含的所有子文档的指令;
所述方法还包括:
根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
查找出所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档,获得所述目标文档所包含的所有子文档;
其中,所述所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档为所述目标文档所包含的所有子文档。
优选地,所述根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值之前还包括:
判断所述目标文档是否为文件夹,若否,则返回错误提示给客户端;若是,则执行在所述目标文档下新增子文档的操作。
本公开还提供一种目录文档的操作装置,包括:
确定单元,用于接收客户端发送的目录文档请求,确定目标文档;
接收单元,用于接收操作指令;
获取单元,用于获取所述目标文件的目录特征值;
修改单元,用于以预设规则修改所述目标文档的目录特征值以及所述目标文档所在目录下的所有文档的目录特征值;
其中,所述目标文档包括目标文件夹和/或目标文件,所述目标文档所在的目录为树状结构的目录。
优选地,所述操作指令包括在所述目标文档下新增子文档的指令;
所述目标文档的目录特征值包括用于唯一标识所述目标文档的层级的节点ID和用于标识所述目标文档包含的子文档的数量的节点值;
所述操作装置还包括:
第一获取模块,用于根据所述操作指令获取所需新增子文档;
第一确定模块,用于根据所获取的新增子文档,确定新增子文档与所述目标文档的层级关系及所需新增的所有子文档的数量;
所述修改单元具体用于:
根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括删除所述目标文档的指令;所述目标文档的节点值包括节点左值和节点右值;
所述修改单元包括:
第二获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
查找模块,用于查找出所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档;
删除模块,用于将所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档和所述目标文档删除;
其中,所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档为所述目标文档包含的子文档。
优选地,还包括:
更新单元,用于以预设规则,更新所述目标文档的上层文档的节点值、同级文档的节点值以及同级文档所包含的子文档的节点值。
优选地,所述操作指令还包括移动所述目标文档的指令;
所述修改单元还包括:
第二确定模块,用于根据所述目标文档的目录特征值,确定所述目标文档的上层文档;
删除移动模块,用于将所述目标文档从所述上层文档中删除,并将所述目标文档移动至指定文档的下层;
更新模块,用于以预设规则更新所述目标文档的节点值、所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括获取所述目标文档的路径指令;
所述操作装置还包括:
第一节点值获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
路径查找模块,用于查找出所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档,获得所述目标文档的路径;
其中,所述所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档为所述目标文档的路径。
优选地,所述操作指令还包括获取所述目标文档所包含的所有子文档的指令;
所述操作装置还包括:
第二节点值获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
子文档查找模块,用于查找出所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档,获得所述目标文档所包含的所有子文档;
其中,所述所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档为所述目标文档所包含的所有子文档。
优选地,判断操作模块,用于根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值之前还包括:
判断所述目标文档是否为文件夹,若否,则返回错误提示给客户端;若是,则执行在所述目标文档下新增子文档的操作。10、根据权利要求9所述的目录文档的操作装置,其特征在于,所述操作指令包括在所述目标文档下新增子文档的指令;
所述目标文档的目录特征值包括用于唯一标识所述目标文档的层级的节点ID和用于标识所述目标文档包含的子文档的数量的节点值;
所述操作装置还包括:
第一获取模块,用于根据所述操作指令获取所需新增子文档;
第一确定模块,用于根据所获取的新增子文档,确定新增子文档与所述目标文档的层级关系及所需新增的所有子文档的数量;
所述修改单元具体用于:
根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括删除所述目标文档的指令;所述目标文档的节点值包括节点左值和节点右值;
所述修改单元包括:
第二获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
查找模块,用于查找出所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档;
删除模块,用于将所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档和所述目标文档删除;
其中,所述所有大于等于所述目标文档的节点左值且小于等于所述目标文档的节点右值所对应的子文档为所述目标文档包含的子文档。
优选地,还包括:
更新单元,用于以预设规则,更新所述目标文档的上层文档的节点值、同级文档的节点值以及同级文档所包含的子文档的节点值。
优选地,所述操作指令还包括移动所述目标文档的指令;
所述修改单元还包括:
第二确定模块,用于根据所述目标文档的目录特征值,确定所述目标文档的上层文档;
删除移动模块,用于将所述目标文档从所述上层文档中删除,并将所述目标文档移动至指定文档的下层;
更新模块,用于以预设规则更新所述目标文档的节点值、所述目标文档所在目录下的其余文档的节点值。
优选地,所述操作指令还包括获取所述目标文档的路径指令;
所述操作装置还包括:
第一节点值获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
路径查找模块,用于查找出所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档,获得所述目标文档的路径;
其中,所述所有小于所述目标文档的节点左值且大于所述目标文档的节点右值所对应的文档为所述目标文档的路径。
优选地,所述操作指令还包括获取所述目标文档所包含的所有子文档的指令;
所述操作装置还包括:
第二节点值获取模块,用于根据所述目标文档的目录特征值,获取所述目标文档的节点左值和节点右值;
子文档查找模块,用于查找出所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档,获得所述目标文档所包含的所有子文档;
其中,所述所有大于所述目标文档的节点左值且小于所述目标文档的节点右值所对应的文档为所述目标文档所包含的所有子文档。
优选地,判断操作模块,用于根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置所述子文档的节点值和所需新增的子文档的节点ID,修改所述目标文档的节点值以及所述目标文档所在目录下的其余文档的节点值之前还包括:
判断所述目标文档是否为文件夹,若否,则返回错误提示给客户端;若是,则执行在所述目标文档下新增子文档的操作。
本公开还提供一种终端,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上所述方法的步骤。
本公开还一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
实施本公开的目录文档的操作方法、终端、可读存储介质,具有以下有益效果:本公开的目录文档的操作方法通过以树状结构的目录为基础,采用简单的方法即可以轻易的实现移动、删除、查询路径、查询某文件夹或者文件等,简化查询文件路径,解决了复杂庞大的目录下的操作,提高了操作的运行效率。
附图说明
下面将结合附图及实施例对本公开作进一步说明,附图中:
图1是本公开一实施例提供的一种目录文档的操作方法的流程示意图;
图2是本公开另一实施例提供的一种目录文档的操作方法中新增子文档的示意图;
图3是本公开另一实施例提供的一种目录文档的操作方法中删除文档的示意图;
图4是本公开另一实施例提供的一种目录文档的操作方法中移动文档的示意图;
图5是本公开另一实施例提供的一种目录文档的操作方法中查询文档路径的示意图;
图6是本公开另一实施例提供的一种目录文档的操作方法中获取文档所包含的所有子文档的示意图;
图7是本公开实施例提供的一种目录文档的装置的结构示意图;
图8是本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
为了对本公开的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本公开的具体实施方式。
为了解决目录结构复杂庞大的情况下,对目录下的文件夹和/或文件的操作繁锁复杂、影响效率的问题,本公开实施构造了一种新的目录文档的操作方法,该操作方法可以快速方便的实现对目录下的文档的新增、删除、移动、路径查询、文档的数据查询等操作,简化了这些操作的步骤,简单易实现。其中,这里所说的文档可以为文件夹和/或文件。
参见图1,为本公开实施例提供的一种目录文档的操作方法的流程示意图。
如图1所示,该目录文档的操作方法,包括以下步骤:
步骤S1、接收客户端发送的目录文档请求,确定目标文档。
可以理解地,客户端发送的目录文档请求可以通过客户端用户的相关操作触发。
例如,可以通过客户端用户单击、双击,如可以通过单击鼠标左键或右键选中目标文档;或者通过双击鼠标左键或右键选中目标文档;或者通过键盘输入目标文档。
当客户端用户完成目标文档的选中操作后,客户端即可获取到目标文档,并向后台服务器发送目标文档请求。后台服务器接收客户端发送的目标文档请求,并根据该请求可以确定需要操作的目标文档,其中,该目标文档的类型可以为文件夹和/或文件,即该目标文档包括目标文件夹和/或目标文件。
步骤S2、接收操作指令。
在步骤S1中,确定目标文档后,若需要对目标文档进行相关操作,则需由客户端用户根据需要输入相关的操作指令。
其中,操作指令的产生可以通过多种方式实现。例如,可以通过单击鼠标左键或右键的方式实现;或者通过双击鼠标左键或右键的方式实现;或者通过键盘输入的方式实现,其中,本公开实施提供的键盘可以采用实体键盘,也可以采用虚拟键盘。
可选的,本公开实施例的操作指令包括但不限于在目标文档下新增子文档的指令、删除目标文档的指令、移动目标文档的指令、获取目标文档的路径指令、以及获取目标文档所包含的所有子文档的指令等。
步骤S3、获取目标文档的目录特征值。
具体的,在步骤S1确定目标文档后,根据所确定的目标文档提取出目标文档的目录特征值。本公开实施例中,目标文档的目录特征值包括用于唯一标识目标文档的层级的节点ID和用于标识目标文档包含的子文档的数量的节点值。
进一步地,本公开实施提供的目标文档的目录特征值还可以包括目标文档的上层文档的节点ID,目标文档的名字、以及目标文档的类型(文件夹或者文件),其中,目标文档的类型可以采用0、1的方式标识,例如,0可以代表文件夹,此时,相应地,1则代表文件。当然,在本公开的其他实施例中,还可以采用其他的方式标识目标文档的类型。
可以理解地,由于本公开实施例提供的目标文档可以为文件夹或者文件,因此,这里的目录特征值实际代表了文件夹的目录特征值或者文件的目录特征值。所以,文件夹/或文件的目录特征值可以包括用于唯一标识文件夹或文件的层级的节点ID和用于标识文件夹或文件包含的子文档的数量的节点值、文件夹或文件上层文件夹的节点ID,文件夹或文件的名字、以及文件夹或文件的类型。
步骤S4、以预设规则修改目标文档的目录特征值以及目标文档所在目录下的所有文档的目录特征值。
本公开实施例基于目标文档的目录特征值的特性,对目录树进行操作,可以很轻易的实现对目录树中的文档的新增、删除、移动、路径查询、及文档所包含的子文档等操作,以简单的方法解决了复杂庞大的目录操作的问题,提高了操作效率。
以下以具体实施例进行说明。
本公开实施例中,所接收的操作指令为:在目标文档下新增子文档的指令。
具体的操作步骤如下:
步骤S11、根据操作指令获取所需新增子文档。
步骤S12、根据所获取的新增子文档,确定新增子文档与目标文档的层级关系及所需新增的所有子文档的数量。
步骤S13、根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置子文档的节点值和所需新增的子文档的节点ID,修改目标文档的节点值以及目标文档所在目录下的其余文档的节点值。
进一步地,在执行步骤S13之前还包括:
判断目标文档是否为文件夹,若否,则返回错误提示给客户端;若是,则执行在目标文档下新增子文档的操作。即若目标文档为文件时,是不能在其基础上新增子文件夹或子文件的。
如图2所示,文件夹1为目标文档。
在接收到需要创建文件夹1的指令后,根据文件夹1的目录特征值,即可实现对文件夹1的创建。具体的,文件夹1为第一个文件夹,此时,其节点左值为0,节点右值为1,节点ID为1并且其上层文件夹的节点ID为0(因为文件夹1无上层文件夹,其自己为第一级文件夹),用0、1代表目标文档的类型,假设0代表文件夹,1代表文件。其中,文件夹1的目录特征值可以根据以下预设规则确定:若文件夹1为根文件夹,其节点左值为0,其节点右值=其节点左值+1。
所以,当确定文件夹1并获取其目录特征值后,即可直接创建文件夹1,即可直接通过设置文件夹1的节点ID、节点左值、节点右值、上层文件的节点ID以及节点类型、及文件名称,完成这些设置后,即可完成文件夹1的创建。如下表所示:
id |
left_val |
right_val |
parent_id |
name |
type |
1 |
0 |
1 |
0 |
文件夹1 |
0 |
当需要在文件夹1下新增一个子文件夹时,如图2所示,假设文件增的子文件夹2为文件夹1的子文件夹,此时目标文件为文件夹2。
文件夹2的目录特征值可以通过以下方式确定:先判断文件夹2是否有子文件夹或子文件,若无,则文件夹2的节点左值=文件夹1的节点左值+1,文件夹2的节点右值=其节点左值+1。所以,文件夹的节点ID为2、节点左值为1、节点右值为2、上层文件夹的节点ID为1。由于是在文件夹1下新增文件夹2,即在文件夹1下新增一个子文件夹(即文件夹2),此时,即可以根据预设规则确定文件夹1的文件夹2的节点左值和节点右值后,直接对文件夹1和文件夹2的节点值进行修改。需要说明的是,由于文件夹1为根文件夹,因此,在进行节点值修改时,文件夹1的节点左值保持不变,其节点右值随所增加的子文件夹和/或文件的数量变化。文件夹1和文件夹2的节点左值和右值变化如下表所示:
在新增子文档的操作中,以预设规则修改文件夹1的节点值具体为:
先判断目标文档(文件夹2)的上层文档是否为根文档(可以根据上层文档的节点ID确定,若节点ID为0,则可以确定上层文档为根文档),若确定文件夹1为根文件夹,则文件夹1的节点左值保持不变,而文件夹1的节点右值随其所增加的子文档的数量进行改变,具体为:文件夹1的节点右值=新增子文件档中最大的节点右值+1。
如图2所示,该实施例是在文件夹1下新增一个子文件夹,即文件夹2,此时,文件夹1的节点左值仍为0,文件夹1节点右值=2+1=3。此时,通过改变文件夹1的节点右值,使文件夹2的节点左值和节点右值被包含在它的上层文件夹(文件夹1)的节点左值和节点右值之中,即可以快速地实现文件夹2的新增,即文件夹1的节点左值和节点右值为0~3,而文件夹2的节点左值和节点右值为1~2,此时,0~3包含了1~2,这种包含关系反应出文件夹2在文件夹1的下面,即文件夹2为文件夹1的子文件夹。
如图3所示,图3左侧文件夹1为第一级文件夹,文件夹2和文件夹4为文件夹1的子文件夹,定义为第二级文件夹,文件夹3为文件夹2的子文件夹。
包括以下步骤:
第一步:在文件夹1的基础上新增文件夹2,此时,文件夹2的节点左值为1,节点右值为2;文件夹1的节点左值为0,节点右值为3。确定后,进行修改,完成文件夹2的新增。
第二步:在文件夹2的下新增文件夹3,此时,文件夹3的节点左值=文件夹2的节点左值+1=1+1=2,文件夹3的节点右值=文件夹3的节点左值+1=2+1=3。在确定文件夹3的节点左右值后,进行相应设置,同时根据文件夹3的节点左右值相应修改文件夹2和文件夹1的节点左右值;这时,文件夹2的节点左值仍为1,文件夹2的节点右值=文件夹3的节点右值+1=3+1=4,使文件夹2包含文件夹3;完成对文件夹2的节点左右值的修改。进一步地,确定文件夹1的节点右值,此时,文件夹1的节点右值=文件夹2的节点右值+1=4+1=5;进而,使文件夹2包含文件夹3,文件夹1包含文件夹2和文件夹3。
第三步:在完成文件夹2、3的增加后,在第二级文件夹中新增文件夹4,即增加与文件夹2的同级文件夹。
此时,文件夹4的节点左值为第二步中确定的文件夹1的节点右值,即文件夹4的节点左值=5,文件夹4的节点右值=其节点左值+1=5+1=6,在确定文件夹4的节点左值和节点右值后,再进一步确定文件夹1的节点右值,此时文件夹1的节点右值=文件夹4的节点右值+1=6+1=7。
最终,文件夹1的节点左值和节点右值范围为0~7,文件夹2的节点左值和节点右值范围为1~4,文件夹3的节点左值和节点右值范围为2~3,文件夹4的节点左值和节点右值范围为5~6,使文件夹1包含文件夹2、3、4,文件夹2包含文件夹3。
第四步:根据第三步中最终确定的各个文件夹的节点左右值,对各个文件夹的节点左右值进行对应设置,即可完成所有子文件夹的新增。如图3的左侧所示。
本公开实施例中,所接收的操作指令为:删除目标文档的指令。
具体的操作步骤如下:
步骤S21、根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。
步骤S22、查找出所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档。
步骤S23、将所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档和目标文档删除。
其中,所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档为目标文档包含的子文档。
步骤S24、以预设规则,更新目标文档的上层文档的节点值、同级文档的节点值以及同级文档所包含的子文档的节点值。
如图3所示,假设要删除文件夹2,此时文件夹2为目标文档。
在确定目标文档为文件夹2,获取文件夹2的目录特征值,以得到文件夹2的节点左值和节点右值。
如图3所示,文件夹2的节点左值为1,其节点右值为4,此时文件夹2的节点左值和节点右值范围为1~4。
接着,找出所有大于等于文件夹2的节点左值且小于文件夹2的节点右值的节点值,此时,可以找到只有文件夹3符合要求,文件夹3的节点左值为2,节点右值为3,在1~4包含的范围内,所以,可以确定文件夹3为文件夹2的子文件夹,进而将文件夹2和文件夹3一并删除,即可完成对文件夹2的删除。
由上可知,在确定目标文档的节点左值和节点右值后,根据其节点左值和节点右值的数据范围,即可以确定其所包含的子文件夹或者子文件,然后将所确定的节点左值和节点右值对应的文件夹或者文件删除,即可完成对目标文档的删除。
本公开实施例中,所接收的操作指令为:移动目标文档的指令。
具体的操作步骤如下:
步骤S31、根据目标文档的目录特征值,确定目标文档的上层文档。
步骤S32、将目标文档从上层文档中删除,并将目标文档移动至指定文档的下层。
步骤S33、以预设规则更新目标文档的节点值、目标文档所在目录下的其余文档的节点值。
如图4所示,假设要将文件夹3移动至文件夹4,此时,文件夹3为目标文档,文件夹4为指定文档。
在确定文件夹3后,获取文件夹3的目录特征值,由文件夹3的目录特征值确定其上层文件夹,即根据文件夹3的节点左值和节点右值,找出节点左值小于文件夹3的节点左值,且节点右值大于文件夹3的节点右值,此时,只有文件夹2的节点左值和节点右值同时满足要求,所以,可以确定文件夹2为文件夹3的上层文件夹。
首先,在确定文件夹3的上层文件为文件夹2后,先将文件夹3删除,即把节点左值为2,节点右值为3的文件夹3删除。
其次,以预设规则确定并修改文件夹2的节点左值和节点右值,即删除文件夹3后,文件夹2没有子文件夹,其节点左值保持不变,节点右值=节点左值+1=1+1=2,文件夹4的节点左值为3,文件夹4的节点右值=节点左值+1=4,文件夹1的节点右值=文件夹4的节点右值+1=4+1=5,然后,更新文件夹2的节点左右值、文件夹4的节点左右值和文件夹1的节点左右值,完成文件夹3的删除。
接着,将文件夹3移动至文件夹4下面,同时修改文件夹3的文件夹4的节点左值和节点右值。其中,将文件夹3移动至文件夹4下面后,文件夹3和文件夹4的节点左右值均需要更新。
在完成对文件夹3的删除后,将文件夹3移动至文件夹4下面,即相当于在文件夹4下新增文件夹3。所以,文件夹3的节点左值=文件夹4的节点左值+1=3+1=4,文件夹3的节点右值=其节点左值+1=4+1=5;文件夹4的节点右值=文件夹3的节点右值+1=5+1=6,而移动文件夹时,在文件夹1的目录下,总文件夹数是不变的,所以,文件夹1的节点右值不需要改变。
最后,更新文件夹3和文件夹4的节点左值和节点右值,完成将文件夹3移动至文件夹4。
本公开实施例中,所接收的操作指令为:获取目标文档的路径指令。
具体的操作步骤如下:
步骤S41、根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。
步骤S42、查找出所有小于目标文档的节点左值且大于目标文档的节点右值所对应的文档,获得目标文档的路径;其中,所有小于目标文档的节点左值且大于目标文档的节点右值所对应的文档为目标文档的路径。
如图5所示,假设要查询文件夹3的路径,此时,文件夹3为目标文档。
传统方法无法快速找出文件夹3的路径。其具体查找方法为:先通过文件夹3找到它的上层文件夹是文件夹2,再通过文件夹2找到它的上层文件夹是文件夹1,再找文件夹1发现没有上层文件夹,才得到文件夹3的路径是:文件夹1->文件夹2->文件夹3。如果目录的路径相当长,则要花费相当多的次数去查询,消耗非常大。而本公开实施例则不需要执行这么多次查询。
本公开实施例提供的具体查询方法为:
首先,在确定文件夹3后,获取文件夹3的目录特征值,并确定其节点左值和节点右值。
然后,查找所有比文件夹3的节点左值小的节点左值,且大于文件夹3的节点右值所对应的文件夹,这些文件夹即为文件夹3的路径。
本公开实施例通过目标文档的节点左值和节点右值,即可快速查询到目标文档的路径,简单方便,不需要进行多次查询,无论路径有多深,都可以快速查找出目标文档的路径。
本公开实施例中,所接收的操作指令为:获取目标文档所包含的所有子文档的指令。
具体的操作步骤如下:
步骤S51、根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。
步骤S52、查找出所有大于目标文档的节点左值且小于目标文档的节点右值所对应的文档,获得目标文档所包含的所有子文档;其中,所有大于目标文档的节点左值且小于目标文档的节点右值所对应的文档为目标文档所包含的所有子文档。
如图6所示,假设要找出文件夹3下的全部文件夹/文件,此时,文件夹3为目标文档。
传统方法查找较为麻烦,具体为:先找到文件夹3下包含有文件夹5和文件夹6,再找出文件夹5下的所有文件夹/文件,再找出文件夹6下的所有文件夹/文件,以此类推。如果文件夹3下的文件目录很多,且层级很深,则要查询非常多次,大大影响了设备运行的效率及性能,加长查询等待时间。而本公开实施例则不需要进行如此多次的查询,且查询时间非常短。
本公开实施例的具体查询方法为:
首先,在确定文件夹3后,获取文件夹3的目录特征值,并确定其节点左值和节点右值。
接着,查找出所有大于文件夹3的节点左值的节点左值,且所有小于文件夹3的节点右值的节点右值,进而确定文件夹3所包含的所有文件夹/文件。所有大于文件夹3的节点左值的节点左值,且所有小于文件夹3的节点右值的节点右值所对应的文件夹/文件即为文件夹3所包含的所有子文件夹/文件。
如图6所示,满足条件的只有文件夹5和文件夹6。由此可以看出,无论文件夹多复杂,仍然可以通过本公开实施提供的方法快速查找出目标文档所包含的所有文件夹/文件。
可以理解地,上述实施例仅列出了目标文档为文件夹的相关操作,当目标文档为文件时,同样可以采用上述方法,本公开在此不再赘述。
参考图7,本公开实施例还提供了一种目录文档的操作装置,该目录文档的操作装置可以用于实现前述实施例提供的目录文档的操作方法。
如图7所示,该目录文档的操作装置包括:
确定单元701,用于接收客户端发送的目录文档请求,确定目标文档。
接收单元702,用于接收操作指令。
获取单元703,用于获取目标文件的目录特征值。
修改单元704,用于以预设规则修改目标文档的目录特征值以及目标文档所在目录下的所有文档的目录特征值;其中,目标文档包括目标文件夹和/或目标文件,目标文档所在的目录为树状结构的目录。
本公开实施例提供的目标文档的目录特征值包括用于唯一标识目标文档的层级的节点ID和用于标识目标文档包含的子文档的数量的节点值。可选的,本公开实施例提供的目录文档的操作装置还可以包括:第一获取模块和第一确定模块。其中,第一获取模块用于根据操作指令获取所需新增子文档;第一确定模块用于根据所获取的新增子文档,确定新增子文档与目标文档的层级关系及所需新增的所有子文档的数量。
进一步地,修改单元704具体可以根据以下方法修改目标文档的目录特征值以及目标文档所在目录下的所有文档的目录特征值,即修改单元704根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置子文档的节点值和所需新增的子文档的节点ID,修改目标文档的节点值以及目标文档所在目录下的其余文档的节点值。
可选的,本公开实施例提供的操作指令还包括:删除目标文档的指令;其中,目标文档的节点值包括节点左值和节点右值。在该实施例中,修改单元704可以包括:第二获取模块、查找模块和删除模块。
第二获取模块,用于根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。
查找模块,用于查找出所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档。
删除模块,用于将所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档和目标文档删除;其中,所有大于等于目标文档的节点左值且小于等于目标文档的节点右值所对应的子文档为目标文档包含的子文档。
进一步地,本公开实施例提供的目录文档的操作装置还可以包括:
更新单元705,用于在将目标文档及其所包含的所有子文档删除之后,以预设规则,更新目标文档的上层文档的节点值、同级文档的节点值以及同级文档所包含的子文档的节点值。
可选的,本公开实施例提供的操作指令还包括:移动目标文档的指令。
该实施例中,修改单元704还可以包括:第二确定模块、删除移动模块和更新模块。
第二确定模块,用于根据目标文档的目录特征值,确定目标文档的上层文档。
删除移动模块,用于将目标文档从上层文档中删除,并将目标文档移动至指定文档的下层。
更新模块,用于以预设规则更新目标文档的节点值、目标文档所在目录下的其余文档的节点值。
可选的,本公开实施例提供的操作指令还包括:获取目标文档的路径指令。
本公开实施例提供的目录文档的操作装置还可以包括:第一节点值获取模块和路径查找模块。
第一节点值获取模块用于根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。路径查找模块,用于查找出所有小于目标文档的节点左值且大于目标文档的节点右值所对应的文档,获得目标文档的路径;其中,所有小于目标文档的节点左值且大于目标文档的节点右值所对应的文档为目标文档的路径。
可选的,本公开实施例提供的操作指令还包括:获取目标文档所包含的所有子文档的指令。
本公开实施例提供的目录文档的操作装置还可以包括:第二节点值获取模块和子文档查找模块。
第二节点值获取模块,用于根据目标文档的目录特征值,获取目标文档的节点左值和节点右值。
子文档查找模块,用于查找出所有大于目标文档的节点左值且小于目标文档的节点右值所对应的文档,获得目标文档所包含的所有子文档;其中,所有大于目标文档的节点左值且小于目标文档的节点右值所对应的文档为目标文档所包含的所有子文档。
进一步地,本公开实施例提供的目录文档的操作装置还可以包括:判断操作模块,用于根据所确定的新增子文档的层级关系和所需新增的所有子文档的数量,以预设规则设置子文档的节点值和所需新增的子文档的节点ID,修改目标文档的节点值以及目标文档所在目录下的其余文档的节点值之前,判断目标文档是否为文件夹,若否,则返回错误提示给客户端;若是,则执行在目标文档下新增子文档的操作。
本公开实施例还提供了一种电子设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上所述方法的步骤。
下面参考图8,其示出了适于用来实现本公开实施例的电子设备800的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本公开实施例还提供了一种可读存储介质,其上存储有计算机程序,所存储的计算机程序被处理器执行时实现上述的目录文档的操作方法。
本公开实施例提供的可读存储介质包括但不限于磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述器件的任意组合。
可以理解地,本公开的可读存储介质可以是上述电子设备800中所包含的可读存储介质,也可以是独立存在而未安装在电子设备800中的可读存储介质。
进一步地,本公开的可读存储介质所存储的计算机程序可以为一个或者多个程序。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上实施例只为说明本公开的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本公开的内容并据此实施,并不能限制本公开的保护范围。凡跟本公开权利要求范围所做的均等变化与修饰,均应属于本公开权利要求的涵盖范围。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本公开所附权利要求的保护范围。