文件操作的方法、装置、存储介质及电子设备与流程

文档序号:24173084发布日期:2021-03-05 19:43阅读:113来源:国知局
文件操作的方法、装置、存储介质及电子设备与流程

1.本公开涉及计算机技术领域,具体地,涉及一种文件操作的方法、装置、存储介质及电子设备。


背景技术:

2.随着信息技术的飞速发展,人们需要在多个文件系统中处理文件,例如本地镜像文件系统、网络文件系统。在相关技术中,由于多个文件系统各自独立进行数据的存储和操作,随着处理的数据文件数量越来越多,会出现较多的重复文件,浪费磁盘空间。


技术实现要素:

3.为了实现上述目的,本公开提供一种文件操作的方法、装置、存储介质及电子设备。
4.第一方面,本公开提供一种文件操作的方法,包括:
5.获取目标文件系统对目标访问节点的操作请求;
6.判断上述目标访问节点的适配器类型是否能执行上述操作请求;
7.当上述目标访问节点的适配器类型能执行上述操作请求时,指定对应的适配器执行上述操作请求;
8.当上述目标访问节点的适配器类型不能执行上述操作请求时,从上述目标访问节点的父节点中继承能执行上述操作请求的适配器,并执行上述操作请求。
9.可选地,上述判断上述目标访问节点的适配器类型是否能执行上述操作请求包括:在上述目标访问节点的适配器类型为只读类型,且上述操作请求为改写请求的情况下,确定上述目标访问节点的适配器类型不能执行上述操作请求;在上述目标访问节点的适配器类型为可写类型,或者,上述操作请求为读取请求或删除请求的情况下,确定上述目标访问节点的适配器类型能执行上述操作请求。
10.可选地,在上述操作请求为改写请求时,上述从上述目标访问节点的父节点中继承能执行上述操作请求的适配器,并执行上述操作请求包括:根据上述目标访问节点所在的文件索引树的结构,从上述目标访问节点向上查找上一级的第一父节点;当上述第一父节点的适配器类型为可写类型时,将上述目标访问节点的适配器更新为上述第一父节点的适配器,并指定更新后的适配器执行上述操作请求;在上述第一父节点的适配器类型为只读类型的情况下,继续向上查找更上一级的父节点,直至查找到第二父节点,上述第二父节点的适配器类型为可写类型,将上述目标访问节点的适配器更新为上述第二父节点的适配器,并指定更新后的适配器执行上述操作请求。
11.可选地,在上述获取目标文件系统对目标访问节点的操作请求之前,上述方法还包括:获取上述目标文件系统对上述目标访问节点所在的文件索引树的装配请求,其中,上述装配请求中包含上述目标文件系统期望在上述文件索引树中操作的至少一个目标访问节点;根据上述目标文件系统的类型,配置上述装配请求中的目标访问节点的适配器类型。
12.可选地,上述文件索引树通过以下方法生成:将文件进行池化处理,其中,上述池化处理包括根据上述文件生成校验码,并根据上述校验码去除上述文件中的重复文件;根据池化后的文件生成上述文件索引树。
13.可选地,上述装配请求还包含上述目标访问节点的类型,在上述获取目标文件系统对文件索引树的装配请求之后,上述方法还包括:根据上述装配请求将上述目标访问节点的类型配置为挂载节点或普通节点,其中上述普通节点属于上述挂载节点的下层节点。
14.在上述操作请求为删除请求的情况下,上述指定对应的适配器执行上述操作请求包括:在上述目标访问节点的类型为上述挂载节点的情况下,将上述目标访问节点的适配器类型置为无效值,上述无效值表示上述目标文件系统无法对上述目标访问节点映射的目标文件或目标文件夹直接操作;在上述目标访问节点的类型为上述普通节点的情况下,删除上述目标访问节点映射的目标文件或目标文件夹,并删除上述文件索引树上映射到上述目标文件或上述目标文件夹的所有节点。
15.可选地,在上述操作请求为读取请求的情况下,上述指定对应的适配器执行上述操作请求包括:对上述目标访问节点对应的目标文件或目标文件夹进行读取操作。
16.第二方面,本公开提供了一种文件操作的装置,上述装置包括:
17.操作请求获取模块,用于获取目标文件系统对目标访问节点的操作请求;
18.判断模块,用于判断上述目标访问节点的适配器类型是否能执行上述操作请求;
19.第一操作请求执行模块,用于当上述目标访问节点的适配器类型能执行上述操作请求时,指定对应的适配器执行上述操作请求;
20.第二操作请求执行模块,用于当上述目标访问节点的适配器类型不能执行上述操作请求时,从上述目标访问节点的父节点中继承能执行上述操作请求的适配器,并执行上述操作请求。
21.第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开第一方面所述方法的步骤。
22.第四方面,本公开提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
23.采用上述技术方案,通过获取目标文件系统对目标访问节点的操作请求,判断目标访问节点的适配器类型是否能执行该操作请求;当目标访问节点的适配器类型能执行该操作请求时,指定对应的适配器执行该操作请求;当目标访问节点的适配器类型不能执行该操作请求时,从目标访问节点的父节点中继承能执行该操作请求的适配器,并执行该操作请求。这样,能够实现多个目标文件系统通过文件索引树的目标访问节点对目标文件或文件夹进行操作,并通过文件索引树的不同节点映射到同一个文件,避免重复文件的出现,节省磁盘空间。
24.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
25.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
26.图1是本公开实施例提供的一种文件操作应用场景的示意图;
27.图2为本公开实施例提供的一种文件操作的方法的示意图;
28.图3是本公开实施例提供的一种文件索引树的示意图;
29.图4是本公开实施例提供的另一种文件操作的方法的示意图;
30.图5是本公开实施例提供的一种文件操作的装置的结构示意图;
31.图6是本公开实施例提供的第二种文件操作的装置的结构示意图;
32.图7是本公开实施例提供的第三种文件操作的装置的结构示意图;
33.图8是本公开实施例提供的第四种文件操作的装置的结构示意图;
34.图9是本公开实施例提供的一种电子设备的框图;
35.图10是本公开实施例提供的另一种电子设备的框图。
具体实施方式
36.以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
37.在下文中的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
38.首先,对本公开的应用场景进行说明。本公开可以应用于需要嵌套使用多个文件系统的场景,特别是小文件较多的场景,在该场景下,相关技术中多个文件系统各自独立进行文件的存储和操作,导致出现较多的重复文件,浪费磁盘空间。
39.为了解决上述问题,本公开提供了一种文件操作的方法、装置、存储介质及电子设备,允许多个目标文件系统通过统一的虚拟文件系统对文件或文件夹进行读取和改写等操作,该虚拟文件系统通过文件索引树的不同节点映射到同一个文件或文件夹,从而避免重复文件的出现,节省磁盘空间。
40.以下结合附图对本公开的具体实施方式进行详细说明。
41.图1是本公开实施例提供的一种文件操作应用场景的示意图,如图1所示,该文件系统包括虚拟文件系统101和目标文件系统组102,其中,目标文件系统组102可以包含一个或多个目标文件系统,目标文件系统提供操作接口,可以通过该操作接口接收用户对文件的操作,并将该操作转换为操作请求,通过对应的适配器提交到虚拟文件系统,最终由虚拟文件系统完成对文件的操作。
42.可选地,目标文件系统可以包括以下至少一个文件系统:重叠式文件系统、本地镜像文件系统、内存文件系统、网络文件系统。示例地,如图1所示,目标文件系统可以包含重叠式文件系统111、本地镜像文件系统112、内存文件系统113和网络文件系统114共四个文件系统,也可以包含其中的1个或多个文件系统。其中,重叠式文件系统可以对存储在本地磁盘上的文件或文件夹的进行读取操作;本地镜像文件系统可以对存储在本地磁盘上的文件或文件夹的操作进行读取操作或改写操作;内存文件系统可以针对内存中的文件进行操作,内存文件系统的优点是读写速度快,可以应用于少量的、频繁操作的文件;网络文件系统可以针对存储在网络服务器上的文件和文件夹进行操作,优点是可以实现文件的共享。
43.需要说明的是,目标文件系统不局限于图1给出的四个目标文件系统,可以是上述四个目标文件系统中的一个或多个,也可以是其他文件系统,例如windows操作系统或unix操作系统中的文件管理系统,本公开对此不作限定。
44.图2是本公开实施例提供的一种文件操作的方法,如图2所示,该方法的执行主体可以是虚拟文件系统,该方法包括:
45.s201、获取目标文件系统对目标访问节点的操作请求。
46.其中,该目标文件系统可以是图1中的目标文件系统组中的任意一个,该目标文件系统组包括一个或多个目标文件系统。该操作请求可以是读取请求、改写请求、删除请求、查询请求和新增请求中的任意一种。读取请求可以是将目标访问节点映射的目标文件或目标文件夹的内容读取到目标文件系统中使用;改写请求可以是在目标文件系统读取目标文件并进行了修改之后,需要把修改后的目标文件写入到对应的文件中时的操作请求;删除请求可以是在目标文件系统不再需要目标文件时将目标文件删除;查询请求可以是获取目标访问节点映射的目标文件或目标文件夹的相关信息,例如目标文件的名称、大小、创建时间和改写时间等相关信息;新增请求可以是在目标文件夹下新增文件或文件夹。
47.上述目标访问节点可以是文件索引树上的访问节点,用于映射到文件或文件夹,不同的文件或文件夹映射的访问节点不同,且该文件索引树的多个访问节点中可以包含至少两个访问节点映射到同一个文件或文件夹,该目标适配器表征目标文件系统能够对目标访问节点映射的文件或文件夹进行操作。
48.该文件索引树可以是预先配置的,也可以是由虚拟文件系统基于文件自动生成的。图3是本公开实施例提供的一种文件索引树的示意图,如图3所示:该文件索引树包含多个访问节点,访问节点分为根节点、子节点和叶子节点,根节点下的子节点包括访问节点a和访问节点d,根节点下的叶子节点包括访问节点b和访问节点c,访问节点a下的叶子节点包括访问节点e1、访问节点f1和访问节点g,访问节点d下的叶子节点包括访问节点e2和访问节点f2,其中,访问节点b和访问节点c可以分别映射到不同的文件,访问节点a和访问节点d可以映射到同一个文件夹x,访问节点e1和访问节点e2可以映射到文件夹x下的同一个文件e0,访问节点f1和访问节点f2也可以映射到文件夹x下的同一个文件f0,该目标访问节点可以是上述任意一个访问节点。上述访问节点可以包含所映射的文件或文件夹的存储路径,用于访问文件或文件夹,例如所映射的文件e0存储在本地,路径为c:\e0,则上述访问节点e1和e2中包含路径c:\e0。
49.s202、判断目标访问节点的适配器类型是否能执行该操作请求。
50.需要说明的是,该文件索引树下的每个访问节点可以有对应的适配器,该适配器的类型可以包括只读类型和可写类型,根据适配器类型和操作请求的类型判断目标访问节点的该适配器类型是否能执行该操作请求。
51.s203、当目标访问节点的适配器类型能执行该操作请求时,指定对应的适配器执行该操作请求。
52.其中,根据该目标访问节点可以获得映射的目标文件或目标文件夹。例如:目标访问节点是图3中的访问节点f1,则该目标节点映射的是本地磁盘c盘上的文件夹x下的文件f0,在操作请求是读取请求的情况下,可以将该文件f0读取到上述目标文件系统中,读取后目标文件系统可以使用该文件f0,也可以对该文件f0进行修改;在目标文件系统需要将修改后的文件f0再次写入本地磁盘时,需要通过改写请求进行,收到目标文件系统的改写请求后,可以将修改后的文件f0写入本地磁盘中;在目标文件系统希望删除本地磁盘上的文件f0时,可以通过删除请求完成。
53.s204、当目标访问节点的适配器类型不能执行该操作请求时,从目标访问节点的父节点中继承能执行该操作请求的适配器,并执行该操作请求。
54.在本步骤中,可以根据文件索引树的结构,从目标访问节点向上查找上一级的父节点,在该父节点能够执行该操作请求时,从该父节点中继承能执行该操作请求的适配器,并执行该操作请求。示例地,若操作请求为改写操作,目标访问节点的适配器类型为只读类型,其父节点的适配器类型为改写类型,则可以继承该父节点的适配器类型,并指定该适配器执行该操作请求。
55.采用上述方法,通过获取目标文件系统对目标访问节点的操作请求,判断目标访问节点的适配器类型是否能执行该操作请求;当目标访问节点的适配器类型能执行该操作请求时,指定对应的适配器执行该操作请求;当目标访问节点的适配器类型不能执行该操作请求时,从目标访问节点的父节点中继承能执行该操作请求的适配器,并执行该操作请求。这样,能够实现多个目标文件系统通过文件索引树的目标访问节点对目标文件或文件夹进行操作,并通过文件索引树的不同节点映射到同一个文件,避免重复文件的出现,节省磁盘空间。
56.在本公开的另外一些实施例中,上述s202步骤中判断目标访问节点的适配器类型是否能执行该操作请求的方式可以包括:
57.在目标访问节点的适配器类型为只读类型,且操作请求为改写请求的情况下,可以确定目标访问节点的适配器类型不能执行该操作请求。
58.在目标访问节点的适配器类型为可写类型,或者,操作请求为读取请求或删除请求的情况下,可以确定目标访问节点的适配器类型能执行该操作请求。
59.这样,针对不同的适配器类型,能够执行的操作请求不同,从而避免了对目标文件或目标文件夹的误操作。例如:希望某个访问节点映射的文件不能改写时,可以将该访问节点的适配器类型设置为只读,这样,对该访问节点不能够执行改写请求,从而避免重要文件被误改写。
60.可选地,在目标访问节点的适配器类型为只读类型,且操作请求为删除请求的情况下,可以确定目标访问节点的适配器类型不能执行该操作请求。这样,可以进一步避免重要文件被误删除。
61.进一步地,上述目标访问节点的适配器可以对应到一个目标文件系统,该目标文件系统可以是图1中的目标文件系统组中的任意一个,这样,可以只允许该目标文件系统对该目标访问节点进行操作。从而避免了多个文件系统对同一个目标访问节点进行操作带来的冲突问题。
62.该操作请求可以是读取请求、改写请求、删除请求、查询请求和新增请求中的任意一种。以下是对不同类型的操作请求的实现方式的说明:
63.在操作请求为读取请求的情况下,可以对目标访问节点映射的目标文件或目标文件夹进行读取操作。示例地,读取操作的目标访问节点是图3中的访问节点e2,访问节点e2映射的是目标文件e0,则读取该目标文件e0到目标文件系统中,可以用于展示给用户,或者可以用于某些软件的配置。
64.在操作请求为查询请求的情况下,可以展示目标访问节点映射的目标文件或目标文件夹的信息。示例地,可以展示目标访问节点映射的目标文件的名称、大小、创建时间、改
写时间等详细信息;也可以展示目标文件夹下有哪些文件的信息。
65.在操作请求为删除请求的情况下,可以删除目标访问节点映射的目标文件或目标文件夹,并删除文件索引树上映射到目标文件或目标文件夹的所有节点。
66.在操作请求为改写请求的情况下,可以将目标文件系统中的新的目标文件改写至目标访问节点映射的目标文件。其中,改写的方式可以是以下两种:
67.方式一、可以直接在原目标文件上执行改写操作。示例地,改写操作的目标访问节点是图3中的访问节点e2,访问节点e2的适配器类型为可写类型,映射的是目标文件e0,可以目标文件系统中的新的目标文件是文件n0,则改写操作可以是在原目标文件e0的位置直接用文件n0覆盖写入。
68.方式二、可以获取映射到该目标文件的所有访问节点,将上述所有访问节点映射到新的目标文件上。进一步地,还可以将原目标文件删除,避免浪费空间。同样的示例,改写操作的目标访问节点是图3中的访问节点e2,访问节点e2映射的是目标文件e0,目标文件系统中的新的目标文件是文件n0,则改写操作的方式可以是:修改映射到文件e0的访问节点e2和访问节点e1,将访问节点e2和访问节点e1映射到文件n0的存储位置,并将e0删除。这样可以节省文件覆盖写入的时间,提高了文件处理效率。
69.采用上述方法,通过文件索引树,实现了读取、改写、删除、查询等不同操作请求的处理方式,并确保了改写和删除操作能够在多个目标文件系统中同步,从而支持多个目标文件系统对文件的操作。
70.在本公开的另外一些实施例中,在目标访问节点的适配器类型为只读类型的情况下,无法直接对目标文件进行改写操作,可以从目标访问节点的父节点中继承能执行改写操作的适配器,并执行该改写操作。该方式可以包括以下步骤:
71.首先,根据文件索引树的结构,从目标访问节点向上查找上一级的第一父节点。
72.其次,当第一父节点的适配器类型为可写类型时,将目标访问节点的适配器更新为第一父节点的适配器,并指定更新后的适配器执行操作请求。
73.最后,在第一父节点的适配器类型为只读类型的情况下,继续向上查找更上一级的父节点,直至查找到第二父节点,该第二父节点的适配器类型为可写类型,将目标访问节点的适配器更新为第二父节点的适配器,并指定更新后的适配器执行该操作请求。
74.示例地,图3所示的文件索引树,目标文件系统执行改写操作的目标访问节点是访问节点e2,访问节点e2映射的是目标文件e0,通过目标适配器获取的新的目标文件是n0,但访问节点e2当前的适配器类型为只读类型,则根据访问节点e2向上查找到第一父节点d,在第一父节点d的适配器类型为可写类型的情况下,将访问节点e2的适配器修改为第一父节点d的适配器,并根据新的目标文件n0改写访问节点e2映射的目标文件;反之,在第一父节点d的适配器类型为只读类型的情况下,继续向上查找父节点,其父节点为根节点,根节点的适配器类型为可写类型的情况下,根节点作为查找到的第二父节点,将访问节点e2的适配器修改为该第二父节点的适配器,并根据新的目标文件改写访问节点e2映射的目标文件。
75.通过上述方式,实现了目标文件系统的改写操作,并确保了该改写操作能够在多个目标文件系统中同步。
76.可选地,改写操作可以只针对文件进行,也就是,只有目标访问节点映射到目标文
件时,才能进行上述改写操作。
77.可选地,在本公开的另外一些实施例中,文件索引树的每个访问节点可以具有读写属性,该读写属性包括只读属性和可写属性。在目标访问节点的读写属性为只读属性且操作请求为改写请求的情况下,保持目标访问节点映射的目标文件不变,也就是写入操作不能对只读属性的访问节点执行。
78.该读写属性可以是在文件索引树生成的时候预设的,例如可以把文件索引树下的所有节点的读写属性全部设置为可写属性,也可以把部分节点设置为只读属性。
79.图4是本公开实施例提供的另一种文件操作的方法,如图4所示,该方法的执行主体可以是虚拟文件系统,该方法包括:
80.s401、将文件进行池化处理。
81.其中,池化处理包括根据文件生成校验码,并根据校验码去除重复文件。
82.在本步骤中,可以基于加密算法计算每个文件的校验码,该加密算法可以是消息摘要算法(message digest algorithm md5),也可以是安全散列算法2(secure hash algorithm 2)。根据计算得到的校验码检查文件是否重复,具体的检查方式如下:
83.对于校验码相等的多个文件,获取文件头的第一预设数目个字节和/或文件尾的第二预设数目个字节作为辅助文件标识,在该辅助文件标识也相等的情况下,认为这多个文件是重复文件,只存储多个重复文件中的一个文件到磁盘或内存中;在该辅助文件标识不相等的情况下,则认为是不同的文件,直接将文件存储到磁盘或内存中;
84.对于校验码不相等的文件,则认为是不同的文件,直接存储到磁盘或内存中。
85.这样,通过该池化处理方式,可以避免了大量重复文件的存储,节省了磁盘空间。
86.s402、根据池化后的文件生成文件索引树。
87.在本步骤中,生成的文件索引树包含多个访问节点,访问节点又可以分为根节点、子节点和叶子节点,该文件索引树可以包含根节点、子节点和叶子节点,也可以只有根节点和叶子节点。其中,子节点用于映射池化后的含有文件或文件夹的非空文件夹,叶子节点用于映射池化后的文件或空文件夹,根节点可以映射到根目录,例如磁盘的c盘,也可以没有任何映射关系。以下举例说明文件索引树的结构:
88.示例一:在所有文件都存储在本地磁盘的根目录下的情况下,生成的文件索引树中包含的访问节点类型可以只有根节点和叶子节点,根节点映射到根目录,叶子节点映射到文件。
89.示例二:文件索引树也可以包含根节点、子节点和叶子节点,例如,在图3所示的文件索引树中,根节点可以映射到根目录c盘,子节点a可以映射到根目录下c盘的文件夹path1,子节点a下的叶子节点e1可以映射到文件path1下的文件e0。
90.示例三:在根节点没有映射关系的情况下,根节点下一层的二层节点可以映射到多个根目录,例如,在图3所示的文件索引树中,根节点可以没有映射到任何文件或文件夹,在根节点下的二层节点中,访问节点a可以映射到c盘,访问节点b可以映射到内存文件,访问节点c可以映射到网络存储空间的某个文件或文件夹,访问节点d可以映射到c盘某文件夹。
91.根据池化前的文件是否存在重复文件,上述访问节点的生成方法包括以下两种方式:
92.对于池化前的重复文件,在上述池化处理中只存储了一个文件,但需要生成多个叶子节点。示例的:池化前的文件中有两个完全相同的重复文件e0、e0-1,在池化处理中只存储了文件e0,在文件索引树上需要生成两个访问节点e1、e2,这两个访问节点都映射到文件e0,映射的方法可以是通过磁盘路径映射或者网络路径映射,例如:e0存储在磁盘上的磁盘路径为c:\e0,则这两个访问节点都映射到该磁盘路径c:\e0下。
93.对于非重复文件,直接生成一个访问节点映射到该文件,同样地,映射的方法可以是通过磁盘路径映射或者网络路径映射,例如:该文件g0的存储路径为磁盘上的c:\g0,则对应生成的访问节点g映射到该磁盘路径c:\g0下。
94.需要说明的是,如果两个文件夹的名称相同且两个文件夹下的文件完全相同,则这两个文件夹是重复文件夹,在池化处理中可以只存储一个文件夹,在文件索引树上生成两个访问节点,分别都映射到存储的这一个文件夹。例如c盘下的文件夹x名称为x,其中包含文件x1、x2、x3;d盘下的文件夹y名称也为x,其中包含相同的文件x1、x2、x3,则文件夹x和文件夹y为重复文件夹,在池化处理中可以只保留文件夹x,删除文件夹y,在文件索引树上生成x和y两个访问节点,并且x和y都映射到文件夹x。
95.s403、获取目标文件系统对文件索引树的装配请求。
96.其中,该文件索引树包含上述目标访问节点,该装配请求中包含目标文件系统期望在文件索引树中操作的至少一个目标访问节点。
97.装配请求的获取方式有多种,其中一种实现方式可以是目标文件系统通过请求消息的形式发送到虚拟文件系统,虚拟文件系统接收该消息并获取该消息中携带的目标访问节点等内容;另外一种实现方式可以是虚拟文件系统提供装配请求的接口函数,并通过该接口函数获取目标文件系统需要装配的目标访问节点等内容。
98.可选地,在本公开的另一实施例中,获取到的装配请求中还可以包含每个目标访问节点的类型,在包含目标访问节点类型的情况下,根据该装配请求将目标访问节点的类型配置为挂载节点或普通节点,其中普通节点属于挂载节点的下层节点,挂载节点可以有一个或多个,普通节点可以没有,也可以有一个或多个。示例地,在文件索引树为图3所示的树状结构的情况下,装配请求中可以包括访问节点d、访问节点e2和访问节点f2共三个目标访问节点,其中,可以将访问节点d作为一个挂载节点,访问节点e2和f2作为普通节点,以便目标文件系统对这几个目标访问节点进行不同的操作。
99.s404、根据目标文件系统的类型,配置装配请求中的目标访问节点的适配器类型。
100.目标访问节点的适配器类型可以包括只读类型和可写类型,用于表征该目标访问节点能够执行的操作请求的类型。
101.该适配器类型是在文件索引树生成的时候预设的,例如可以是把文件索引树下的所有访问节点的适配器类型全部设置为可写类型,也可以把部分访问节点的适配器类型设置为只读类型。示例地,装配请求中可以包括访问节点d、访问节点e2和访问节点f2共三个目标访问节点,则将这三个目标访问节点的适配器类型可以都配置为可写类型。这样对这三个目标文件节点都可以执行读取请求、改写请求或删除请求。若将访问节点f2的适配器类型配置为只读类型,则不允许访问节点f2执行改写请求。
102.进一步地,该适配器类型也可以是由预设的与目标文件系统对应的类型。例如,由于重叠式文件系统的写入操作非常耗时,因此,当目标文件系统为重叠式文件系统时,可以
配置所有目标访问节点的适配器类型为只读类型,这样重叠式文件系统不能对目标访问节点执行写入操作。而当目标文件系统为本地镜像文件系统时,可以配置所有目标访问节点的适配器类型为可写类型。
103.这样,无需通过文件拷贝操作,通过文件索引树提供了目标文件系统能够直接操作的访问节点d、访问节点e2和访问节点f2,提高了效率,节省了磁盘空间。
104.s405、获取目标文件系统对目标访问节点的操作请求。
105.s406、判断目标访问节点的适配器类型是否能执行该操作请求,当目标访问节点的适配器类型能执行该操作请求时,指定对应的适配器执行该操作请求。
106.在本步骤中,对目标访问节点的操作请求可以是读取请求、改写请求、删除请求、查询请求和新增请求中的任意一种。
107.采用上述方式,无需通过文件拷贝操作,虚拟文件系统可以根据目标文件系统的装配请求,通过文件索引树提供目标文件系统能够直接操作的访问节点,目标文件系统通过文件索引树的目标访问节点,对目标文件或目标文件夹进行操作,提高了效率,节省了磁盘空间。
108.在本公开的另外一些实施例中,在操作请求为删除请求的情况下,可以根据目标访问节点的类型进行以下的删除操作:
109.删除操作一:在该操作请求为删除请求,且目标访问节点的类型为挂载节点的情况下,将该目标访问节点的适配器类型置为无效值,该无效值表示目标文件系统无法对该目标访问节点映射的目标文件或目标文件夹直接操作。进一步地,还可以将属于该目标访问节点下层的普通节点的适配器类型也置为无效值。
110.删除操作二:在该操作请求为删除请求,且目标访问节点的类型为普通节点的情况下,删除目标访问节点映射的目标文件或目标文件夹,并删除文件索引树上映射到目标文件或目标文件夹的所有节点。
111.示例地,在文件索引树为图3所示的树状结构的情况下,访问节点d、e2、f2的适配器类型为可写类型,访问节点d作为挂载节点,访问节点e2和f2作为普通节点。
112.当删除请求的目标访问节点为访问节点d时,由于访问节点d是挂载节点,因此可以将访问节点d的适配器类型置为无效值,同时,访问节点d映射的文件或文件夹保持不变。也可以将访问节点d、访问节点e2和访问节点f2的适配器类型都置为无效值,同时访问节点d、访问节点e2、访问节点f2映射的文件或文件夹都保持不变。
113.当删除请求的目标访问节点为访问节点e2时,由于访问节点e2是普通节点,因此将访问节点e2映射的文件删除,仍然以访问节点e2和访问节点e1都映射到同一个文件e0为例,此时需要删除文件e0,同时在文件索引树上删除访问节点e2和访问节点e1。
114.通过上述方式,实现了目标文件系统的删除操作,并确保了该删除操作能够在多个目标文件系统中同步。
115.图5是本公开实施例提供的一种文件操作的装置的结构示意图,如图5所示,该装置包括:
116.操作请求获取模块501,用于获取目标文件系统对目标访问节点的操作请求;
117.判断模块502,用于判断该目标访问节点的适配器类型是否能执行该操作请求;
118.第一操作请求执行模块503,用于当该目标访问节点的适配器类型能执行该操作
请求时,指定对应的适配器执行该操作请求;
119.第二操作请求执行模块504,用于当该目标访问节点的适配器类型不能执行该操作请求时,从该目标访问节点的父节点中继承能执行该操作请求的适配器,并执行该操作请求。
120.可选地,该判断模块502用于:
121.在该目标访问节点的适配器类型为只读类型,且该操作请求为改写请求的情况下,确定该目标访问节点的适配器类型不能执行该操作请求;
122.在该目标访问节点的适配器类型为可写类型,或者,该操作请求为读取请求或删除请求的情况下,确定该目标访问节点的适配器类型能执行该操作请求。
123.可选地,该第二操作请求执行模块504还用于:
124.根据文件索引树的结构,从该目标访问节点向上查找上一级的第一父节点;
125.当该第一父节点的适配器类型为可写类型时,将该目标访问节点的适配器更新为该第一父节点的适配器,并指定更新后的适配器执行该操作请求;
126.在该第一父节点的适配器类型为只读类型的情况下,继续向上查找更上一级的父节点,直至查找到第二父节点,该第二父节点的适配器类型为可写类型,将该目标访问节点的适配器更新为该第二父节点的适配器,并指定更新后的适配器执行该操作请求。
127.可选地,图6是本公开实施例提供的第二种文件操作的装置的结构示意图,如图6所示,该装置还包括:
128.装配请求获取模块601,用于获取该目标文件系统对该目标访问节点所在的文件索引树的装配请求,其中,该装配请求中包含该目标文件系统期望在该文件索引树中操作的至少一个目标访问节点;
129.适配器配置模块602,根据该目标文件系统的类型,配置该装配请求中的目标访问节点的适配器类型。
130.可选地,图7是本公开实施例提供的第三种文件操作的装置的结构示意图,如图7所示,该装置还包括:
131.文件索引树生成模块701,用于将该文件进行池化处理,其中,该池化处理包括根据该文件生成校验码,并根据该校验码去除该文件中的重复文件;根据池化后的文件生成该文件索引树。
132.可选地,图8是本公开实施例提供的第四种文件操作的装置的结构示意图,如图8所示,该装配请求还包含该目标访问节点的类型,该装置还包括:
133.节点类型配置模块801,用于根据该装配请求将该目标访问节点的类型配置为挂载节点或普通节点,其中该普通节点属于该挂载节点的下层节点;
134.该第一操作请求执行模块503,用于在该操作请求为删除请求的情况下,指定对应的适配器执行该操作请求,包括以下方式:在该目标访问节点的类型为该挂载节点的情况下,将该目标访问节点的适配器类型置为无效值,该无效值表示该目标文件系统无法对该目标访问节点映射的目标文件或目标文件夹直接操作;在该目标访问节点的类型为该普通节点的情况下,删除该目标访问节点映射的目标文件或目标文件夹,并删除该文件索引树上映射到该目标文件或该目标文件夹的所有节点。
135.可选地,该第一操作请求执行模块503用于:在该操作请求为该读取请求的情况
下,对该目标文件或该目标文件夹进行读取操作。
136.可选地,该装置中的目标文件系统包括以下至少一个文件系统:重叠式文件系统、本地镜像文件系统、内存文件系统、网络文件系统。
137.采用上述装置,能够实现多个文件系统通过文件所引述对文件或文件夹进行读取和写入等操作,对于重复文件,可以通过文件索引树的不同节点映射到同一个文件的处理,从而避免大量重复文件的出现,节省磁盘空间。
138.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
139.图9是根据一示例性实施例示出的一种电子设备900的框图。如图9所示,该电子设备900可以包括:处理器901,存储器902。该电子设备900还可以包括多媒体组件903,输入/输出(i/o)接口904,以及通信组件905中的一者或多者。
140.其中,处理器901用于控制该电子设备900的整体操作,以完成上述的文件操作方法中的全部或部分步骤。存储器902用于存储各种类型的数据以支持在该电子设备900的操作,这些数据例如可以包括用于在该电子设备900上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件903可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器902或通过通信组件905发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口904为处理器901和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件905用于该电子设备900与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near field communication,简称nfc),2g、3g、4g、nb-iot、emtc、或其他5g等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件905可以包括:wi-fi模块,蓝牙模块,nfc模块等等。
141.在一示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的文件操作方法。
142.在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的文件操作方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器902,上述程序指令可由电子设备900的处理器901执行
以完成上述的文件操作方法。
143.图10是根据一示例性实施例示出的一种电子设备1000的框图。例如,电子设备1000可以被提供为一服务器。参照图10,电子设备1000包括处理器1022,其数量可以为一个或多个,以及存储器1032,用于存储可由处理器1022执行的计算机程序。存储器1032中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1022可以被配置为执行该计算机程序,以执行上述的文件操作方法。
144.另外,电子设备1000还可以包括电源组件1026和通信组件1050,该电源组件1026可以被配置为执行电子设备1000的电源管理,该通信组件1050可以被配置为实现电子设备1000的通信,例如,有线或无线通信。此外,该电子设备1000还可以包括输入/输出(i/o)接口1058。电子设备1000可以操作基于存储在存储器1032的操作系统,例如windows server,mac os x,unix,linux等等。
145.在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的文件操作方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1032,上述程序指令可由电子设备1000的处理器1022执行以完成上述的文件操作方法。
146.在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的文件操作方法的代码部分。
147.以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
148.另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
149.此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1