一种文件扫描方法及相关装置与流程

文档序号:29065761发布日期:2022-03-01 18:59阅读:104来源:国知局
一种文件扫描方法及相关装置与流程

1.本发明涉及文件扫描技术领域,尤其涉及一种文件扫描方法及相关装置。


背景技术:

2.伴随着电子设备的发展,智慧屏、个人电脑、平板电脑等电子设备的应用场景越来越多样化。当存储设备(移动硬盘、u盘等)接入电子设备后,电子设备通过对存储设备内的文件进行扫描,可以得到所有存储设备的文件信息。目前,随着存储设备的存储容量不断扩大,能存储的文件数量越多,使得文件扫描过程中需要遍历的文件数量增加。
3.例如,用户想要查看存储设备内的媒体信息。当存储设备接入电子设备后,电子设备对存储设备进行媒体文件扫描,扫描过程包括遍历存储设备中的所有待扫描文件,发现媒体文件后会对该媒体文件进行相应的解析,从而得到文件扫描结果(如得到媒体文件的缩略图等)并存储至媒体数据库。最终,电子设备可以通过读取媒体数据库中的数据获得存储设备内的媒体文件信息。当存储设备从电子设备上移除时,电子设备会清除暂存于媒体数据库中该存储设备的扫描结果。所以,当该存储设备再次接入电子设备时,电子设备会重新对该存储设备进行全盘扫描。
4.然而,在一些智慧屏等存储设备频繁插拔的场景中,若存储设备上的文件数量很多,则每进行一次全盘扫描都需要花费大量的时间,导致用户不能即时查看文件内容,从而降低用户体验感。
5.因此,如何提高当存储设备接入电子设备,电子设备进行文件扫描时的文件扫描效率,是亟待解决的问题。


技术实现要素:

6.本发明实施例所要解决的技术问题在于,提供一种文件扫描方法及相关装置,解决了同一存储设备频繁接入同一电子设备情况下,文件扫描时间长效率低的问题。
7.第一方面,本发明实施案例提供了一种文件扫描方法,可包括:
8.接收针对目标存储设备的扫描请求,获取第一文件信息;所述第一文件信息包括所述目标存储设备存储的已扫描文件列表的第一目录信息,所述第一目录信息包括所述已扫描文件列表的每一个目录的第一修改时间戳;获取第二文件信息,所述第二文件信息包括所述目标存储设备存储的待扫描文件列表的第二目录信息,所述第二目录信息包括所述待扫描文件列表中的每一个目录的第二修改时间戳;将所述第一目录信息与所述第二目录信息进行比较,生成脏目录集合;所述脏目录集合中的脏目录为所述第一目录信息与所述第二目录信息中文件名相同且所述第一修改时间戳与所述第二修改时间戳不一致的目录或出现在所述第二目录信息且未出现在所述第一目录信息的目录。在本发明实施例中,当同一个存储设备多次接入电子设备时,电子设备可通过比较该存储设备的上一次的目录的修改时间戳与当前最新的目录的修改时间戳,将两个修改时间戳不一致的目录确定为脏目录,并对确定的脏目录下的子文件和子目录进行遍历,从而进一步确定具体发生改动的文
件或目录,避免对存储设备进行全盘遍历,减少了遍历的文件数量,缩短了遍历花费的时间,提升了文件扫描效率。
9.在一种可能的实现方式中,所述获取第一文件信息包括,根据所述存储设备的通用唯一识别码(uuid)查找与所述uuid匹配的所述第一文件信息。本发明实施例中,由于会为每一个存储设备设置一个uuid,且每一个存储设备所对应的uuid都是不同的,因此当存储设备再次接入电子设备时,电子设备会根据这个uuid在数据库中查找对应存储设备的最新一次的扫描结果。通过实施本发明实施例的方法,可以在不用对存储设备的扫描结果进行额外标记的情况下,电子设备能够在存储设备再次接入时更快速地找到存储设备的最新一次的扫描结果。
10.在一种可能的实现方式中,所述生成脏目录集合包括,在所述第一目录信息中不存在目录的情况下,将所述存储设备存储的待扫描文件列表的根目录添加到所述脏目录集合。本发明实施例中,当存储设备是第一次接入电子设备,电子设备的数据库中没有对该存储设备的扫描结果的记录,在这种情况下,初始时只用将存储设备中存储的文件的根目录记为脏目录。然后对根目录进行遍历,在遍历过程若发现新增目录或新的脏目录,则再将新增目录或新的脏目录添加到脏目录集合中。通过实施本发明实施例的方法,可以快速地完成对存储设备的第一次文件扫描。
11.在一种可能的实现方式中,所述将所述第一目录信息与所述第二目录信息进行比较之后,还包括,从第一目录信息中删除待删除目录,以及删除所述待删除目录对应的扫描结果;所述待删除目录为出现在所述第一目录信息且未出现在所述第二目录信息的目录。本发明实施例中,当存储设备拔出后,若用户删除了一些存储设备中存储的目录,则再次接入电子设备时,这些被删除的目录就没有当前最新的修改时间戳,但在电子设备的数据库中会有这些目录的上一次的修改时间戳。当电子设备发现一个目录只有上一次的修改时间戳而没有当前最新的修改时间戳时,就判断该目录已被删除,电子设备就在自己的数据库中将这些目录相关的信息全部删除。通过实施本发明实施例的方法,电子设备可以快速找出被删除的目录,且在数据库中更新存储设备的文件扫描结果。
12.在一种可能的实现方式中,当所述脏目录集合为空集,结束对所述待扫描文件列表的文件扫描。本发明实施例中,当存储设备拔出后,若用户未对存储设备中存储的文件或目录进行改动,则存储设备中所存储的文件或目录的修改时间戳不会发生改变。当存储设备再次接入电子设备,电子设备在比较文件名相同的目录的上一次的修改时间戳与当前最新的修改时间戳时,若所有目录对应的两个时间戳都一致,确定没有被改动的目录,则结束对该存储设备进行文件扫描的过程。通过实施本发明实施例的方法,可以避免对未改动过的文件进行重复扫描,从而减少了用户等待文件扫描的时间。
13.在一种可能的实现方式中,当所述脏目录集合为非空集合,对所述脏目录集合中的脏目录进行文件扫描。本发明实施例中,当存储设备拔出后,若用户对存储设备中存储的文件或目录进行改动,则会导致被改动的文件或目录的修改时间戳发生变化。因此导致一些目录的上一次的修改时间戳与当前最新的修改时间戳不一致,则电子设备仅对这些目录进行文件扫描,可以避免对未修改的目录进行重复扫描,从而减少文件扫描的文件数量。
14.在一种可能的实现方式中,所述对所述脏目录集合中的脏目录进行文件扫描包括,将所述脏目录集合中的脏目录的所述第一修改时间戳与第二修改时间戳进行比较;将
所述第一修改时间戳与所述第二修改时间戳一致的脏目录从所述脏目录集合中删除。本发明实施例中,由于可以同时对多个脏目录进行并行的文件扫描,因此在对每一个脏目录进行文件扫描前,可再次确定脏目录的上一次的修改时间戳与当前最新的修改时间戳是否一致,如果一致则将所述脏目录从脏目录集合中删除,可以避免对脏目录进行重复扫描。
15.在一种可能的实现方式中,记录所述脏目录的属性信息;所述属性信息包括所述脏目录的第二修改时间戳。本发明实施例中,在对被改动的目录进行文件扫描前,记录下被改动的目录的当前最新的修改时间戳,以便于之后对数据库中的文件扫描结果进行更新。
16.在一种可能的实现方式中,遍历所述脏目录下的所有直接子文件;所述直接子文件包括所述脏目录下的子文件和子目录。本发明实施例中,在对脏目录进行文件扫描时,只遍历脏目录的直接子文件,而无需遍历直接子文件下的文件和目录,原因在于本发明实施例中在确定初始脏目录集合时,已经将所有时间戳有变化的目录(包括子目录)均确定为了脏目录,且本发明实施例会对所有脏目录下的直接子文件和子目录进行扫描,因此只需要针对每个脏目录下的直接子文件下的文件和目录进行扫描即可以覆盖到存储设备中所有时间戳发生变化的目录或文件以及新增目录。通过实施本发明实施例的方法,遍历脏目录下的直接子文件可以减少文件扫描过程中遍历文件的数量,减少遍历时间,从而提升文件扫描效率。
17.在一种可能的实现方式中,获取第一子文件信息;所述第一子文件信息包括所述已扫描文件列表中所述脏目录的所述直接子文件的第一子修改时间戳;获取第二子文件信息;所述第二子文件信息包括所述待扫描文件列表中所述脏目录的所述直接子文件的第二修改时间戳;将文件名相同的所述直接子文件的所述第一子文件信息与所述第二子文件信息进行比较,确定被改动的所述直接子文件。本发明实施例中,当存储设备拔出后,若用户对存储设备中存储的脏目录的直接子文件进行改动,则会导致直接子文件的修改时间戳发生变化。将直接子文件的上一次的修改时间戳与当前最新的修改时间戳进行比较,如果两个时间戳不一致,则判断该直接子文件被修改过。通过实施本发明实施例的方法,可以更快速地判断出脏目录下的直接子文件是否有被改动过。
18.在一种可能的实现方式中,所述确定被改动的所述直接子文件包括,确定所述直接子文件为被修改直接子文件;所述被修改直接子文件为所述第一子文件信息与所述第二子文件信息中文件名相同且第一子修改时间戳与所述第二子修改时间戳不一致的直接子文件;确定所述直接子文件为被删除直接子文件;所述被删除直接子文件为未出现在所述第二子文件信息中且出现在所述第一子文件信息中的直接子文件。本发明实施例中,如果文件名相同的直接子文件有上一次的修改时间戳和当前最新的修改时间戳且这两个修改时间戳不一致,则说明在存储设备断开后,用户修改过该直接子文件,将该直接子文件确定为被修改直接子文件。如果文件名相同的直接子文件只存在上一次的修改时间戳而不存在当前最新的修改时间戳,则说明存储设备断开后,用户删除了该直接子文件,将该直接子文件确定为被删除直接子文件。
19.在一种可能的实现方式中,删除所述已扫描文件列表的扫描结果中所述被删除直接子文件的信息。本发明实施例中,当电子设备发现一个直接子文件只有上一次的修改时间戳而没有当前最新的修改时间戳时,就判断该目录已被删除,电子设备就在自己的数据库中将这些直接子文件相关的信息全部删除。通过实施本发明实施例的方法,电子设备可
以快速找出被删除的直接子文件,且在数据库中更新存储设备的文件扫描结果。
20.在一种可能的实现方式中,判断所述被修改直接子文件是否为目录;若否,则确定所述被修改直接子文件为被修改子文件,获取所述被修改子文件的文件属性,对所述被修改子文件进行文件解析并在所述已扫描文件列表的扫描结果中更新所述被修改子文件的扫描结果;若是,则确定所述被修改直接子文件为被修改子目录,获取所述被修改子目录的目录属性,将所述被修改子目录的所述第一子修改时间戳置为负数,并将所述被修改子目录的扫描结果插入所述已扫描文件列表的扫描结果。本发明实施例中,当找到了脏目录下被改动的直接子文件后,对被修改子文件进行重新解析,并在电子设备的数据库中更新该被修改子文件的文件扫描结果;当发现被修改子目录时,将被修改子目录的上一次的修改时间戳置为一个负数,因为正常情况下修改时间戳的数值是一个大于0的数字,将其置为负数就代表着将该被修改子目录标记为脏。直到该被修改的子目录的相关信息更新成功后,才将该置为负数的时间戳修改为当前最新的时间戳,以保证在这些被修改子目录在未完成更新之前,无论在什么情况下,都可以被认定为是脏目录(因为负数的时间戳与任意正常时间戳相比较,其必定会不一样)。
21.在一种可能的实现方式中,所述将所述被修改子目录的扫描结果插入所述已扫描文件列表的扫描结果,还包括:判断所述被修改子目录的扫描结果是否成功插入所述已扫描文件列表的扫描结果;在插入成功情况下,将所述被修改子目录添加到所述脏目录集合。本发明实施例中,将被修改子目录的修改时间戳置为负数后,将该被修改子目录插入扫描结果,若插入成功则该被修改子目录就为新增目录,就将其添加到脏目录集合中。
22.在一种可能的实现方式中,所述方法还包括,确定遍历完所述脏目录的所有所述直接子文件;更新当前所述脏目录的扫描结果;所述当前脏目录的扫描结果包括所述脏目录的第一修改时间戳。可选的,当发现存在修改时间戳为负数的目录,则把时间戳的负值更新为当前最新的修改时间戳。本发明实施例中,在遍历完一个脏目录下的所有直接子文件后,就把脏目录的第一修改时间戳改为当前最新的修改时间戳,最终更新了电子设备的数据库中所述脏目录的扫描结果。
23.在一种可能的实现方式中,将t3
-△
t时间段内的所有扫描结果中的目录的第一修改时间戳置为负数;所述t3为接收到所述存储设备卸载消息的时间;所述

t为预设的时间段。可选的,所述

t为根据不同系统得出相应的经验时间差。需要说明的是,通常

t大于或等于(t3-t1),t1为存储设备与电子设备断开的时间。本发明实施例中,通过将t3
-△
t时间段内的所有扫描结果中的目录的第一修改时间戳置为负数,当电子设备再次对所述存储设备进行文件扫描时,由于其为负值的时间戳必定会与正常情况下的任意时间戳不一致,所以会在形成脏目录的过程中被确定为脏目录,因此会重新遍历和解析这些文件。通过这种方式可以避免存储设备热插拔和异常中断时,调用文件系统接口得到不一致结果的问题,提升了文件扫描的稳定性,提升了实际场景下的可使用性。
24.第二方面,本技术提供了一种文件扫描装置,可包括:
25.接收模块,用于接收针对目标存储设备的扫描请求;
26.第一获取模块,用于获取第一文件信息;所述第一文件信息包括所述目标存储设备存储的已扫描文件列表的第一目录信息,所述第一目录信息包括所述已扫描文件列表的每一个目录的第一修改时间戳;
27.第二获取模块,用于获取第二文件信息,所述第二文件信息包括所述目标存储设备存储的待扫描文件列表的第二目录信息,所述第二目录信息包括所述待扫描文件列表中的每一个目录的第二修改时间戳;
28.处理模块,用于将所述第一目录信息与所述第二目录信息进行比较,生成脏目录集合;所述脏目录集合中的脏目录为所述第一目录信息与所述第二目录信息中文件名相同且所述第一修改时间戳与所述第二修改时间戳不一致的目录或出现在所述第二目录信息且未出现在所述第一目录信息的目录。
29.在本发明实施例通过在文件扫描装置中,首先接收模块接收到文件扫描请求,第一获取模块获取第一文件信息,第二获取模块获取第二文件信息,处理模块将所获得的第一文件信息中的第一目录信息与所获得的第二文件信息中的第二目录信息进行比较,然后处理模块遍历被改动过的目录,避免对存储设备进行全盘遍历,减少了遍历的文件数量,缩短了遍历花费的时间,提升了文件扫描效率。在一种可能实现的方式中,所述第一获取模块,具体用于:根据所述存储设备的通用唯一识别码(uuid)查找与所述uuid匹配的所述第一文件信息。
30.在一种可能实现的方式中,所述处理模块,具体用于:在所述第一目录信息中不存在目录的情况下,将所述存储设备存储的待扫描文件列表的根目录添加到所述脏目录集合。
31.在一种可能实现的方式中,所述装置还包括:删除模块,用于所述将所述第一目录信息与所述第二目录信息进行比较之后,从第一目录信息中删除待删除目录,以及删除所述待删除目录对应的扫描结果;所述待删除目录为出现在所述第一目录信息且未出现在所述第二目录信息的目录。
32.在一种可能实现的方式中,所述处理模块,具体用于:当所述脏目录集合为空集,结束对所述待扫描文件列表的文件扫描。
33.在一种可能实现的方式中,所述处理模块,具体用于:当所述脏目录集合为非空集合,对所述脏目录集合中的脏目录进行文件扫描。
34.在一种可能实现的方式中,所述处理模块和所述删除模块,具体用于:处理模块,用于将所述脏目录集合中的脏目录的所述第一修改时间戳与第二修改时间戳进行比较;删除模块,用于将所述第一修改时间戳与所述第二修改时间戳一致的脏目录从所述脏目录集合中删除。
35.在一种可能实现的方式中,所述装置还包括:记录模块,用于记录所述脏目录的属性信息;所述属性信息包括所述脏目录的第二修改时间戳。
36.在一种可能实现的方式中,所述处理模块,具体用于:遍历所述脏目录下的所有直接子文件;所述直接子文件包括所述脏目录下的子文件和子目录。
37.在一种可能实现的方式中,所述第一获取模块、所述第二获取模块和所述处理模块,具体用于:第一获取模块,用于获取第一子文件信息;所述第一子文件信息包括所述已扫描文件列表中所述脏目录的所述直接子文件的第一子修改时间戳;第二获取模块,用于获取第二子文件信息;所述第二子文件信息包括所述待扫描文件列表中所述脏目录的所述直接子文件的第二修改时间戳;处理模块,用于将文件名相同的所述直接子文件的所述第一子文件信息与所述第二子文件信息进行比较,确定被改动的所述直接子文件。
38.在一种可能实现的方式中,所述处理模块,具体用于:确定所述直接子文件为被修改直接子文件;所述被修改直接子文件为所述第一子文件信息与所述第二子文件信息中文件名相同且第一子修改时间戳与所述第二子修改时间戳不一致的直接子文件;确定所述直接子文件为被删除直接子文件;所述被删除直接子文件为未出现在所述第二子文件信息中且出现在所述第一子文件信息中的直接子文件。
39.在一种可能实现的方式中,所述删除模块,具体用于:删除所述已扫描文件列表的扫描结果中所述被删除直接子文件的信息。
40.在一种可能实现的方式中,所述处理模块,具体用于:判断所述被修改直接子文件是否为目录;若否,则确定所述被修改直接子文件为被修改子文件,获取所述被修改子文件的文件属性,对所述被修改子文件进行文件解析并在所述已扫描文件列表的扫描结果中更新所述被修改子文件的扫描结果;若是,则确定所述被修改直接子文件为被修改子目录,获取所述被修改子目录的目录属性,将所述被修改子目录的所述第一子修改时间戳置为负数,并将所述被修改子目录的扫描结果插入所述已扫描文件列表的扫描结果。
41.在一种可能实现的方式中,所述处理模块,具体用于:判断所述被修改子目录的扫描结果是否成功插入所述已扫描文件列表的扫描结果;在插入成功情况下,将所述被修改子目录添加到所述脏目录集合。
42.在一种可能实现的方式中,所述处理模块,具体用于:
43.确定遍历完所述脏目录的所有所述直接子文件;更新当前所述脏目录的扫描结果;所述当前脏目录的扫描结果包括所述脏目录的第一修改时间戳。
44.在一种可能实现的方式中,所述处理模块,具体用于:将t3
-△
t时间段内的所有扫描结果中的目录的第一修改时间戳置为负数;所述t3为接收到所述存储设备卸载消息的时间;所述

t为预设的时间段。
45.第三方面,本技术提供了一种计算机存储介质,可包括:用于储存为上述第二方面提供的一种文件扫描装置中的处理模块中所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
46.第四方面,本技术提供了一种计算机程序,可包括:该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面中的文件扫描装置中的处理模块所执行的流程。
47.第五方面,本发明实施例提供一种电子设备,该电子设备中包括处理器,处理器被配置为支持该电子设备实现第一方面提供的文件扫描方法中相应的功能。该电子设备还可以包括存储器,存储器用于与处理器耦合,其保存该电子设备必要的程序指令和数据。该电子设备还可以包括通信接口,用于该电子设备与其他设备或通信网络通信。
48.第六方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能,例如,生成或处理上述文件扫描方法中所涉及的信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存电子设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
49.图1是本发明实施例提供的一种文件扫描的系统架构示意图。
50.图2是本发明实施例提供的一种电子设备的文件扫描系统架构示意图。
51.图3是本发明实施例提供的一种文件扫描方法的流程示意图。
52.图4是本发明实施例提供的首次接入文件信息示意图。
53.图5是本发明实施例提供的再次接入文件信息示意图。
54.图6a是本发明实施例提供的一种文件扫描生成脏目录集合流程示意图。
55.图6b是本发明实施例提供的一种文件扫描流程示意图。
56.图7a是本发明实施例提供的移动硬盘第一次插入智慧屏的第一文件信息与第二文件信息示意图。
57.图7b是本发明实施例提供的存储设备首次接入根目录下的直接子文件信息示意图。
58.图8a是本发明实施例提供的a目录直接子文件的第一子文件信息与第二子文件信息示意图。
59.图8b是本发明实施例提供的c目录直接子文件的第一子文件信息与第二子文件信息示意图。
60.图8c是本发明实施例提供的x目录直接子文件的第一子文件信息与第二子文件信息示意图。
61.图9是本发明实施例提供的存储设备首次接入文件扫描示意图。
62.图10是本发明实施例提供的移动硬盘再次插入智慧屏的第一文件信息与第二文件信息示意图。
63.图11a是本发明实施例提供的再次插入a目录直接子文件的第一子文件信息与第二子文件信息示意图。
64.图11b是本发明实施例提供的再次插入c目录直接子文件的第一子文件信息与第二子文件信息示意图。
65.图11c是本发明实施例提供的e目录直接子文件的第一子文件信息与第二子文件信息示意图。
66.图12是本发明实施例提供的存储设备再次接入文件扫描示意图。
67.图13是本发明实施例提供的一种文件扫描装置的结构示意图。
具体实施方式
68.下面将结合本发明实施例中的附图,对本发明实施例进行描述。
69.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
70.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
71.以下,对本技术中的部分用语进行解释说明,以便于本领域技术人员理解。
72.(1)通用唯一识码(universally unique identifier,uuid)是一个128比特的数值,任意一个uuid都不会有相同的值。
73.(2)文件系统(file system,fs)文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构。即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。
74.(3)虚拟文件系统(virtual file system,vfs)虚拟文件系统的作用就是调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。vfs是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。
75.首先,分析并提出本技术所具体要解决的技术问题。现有技术中,关于文件扫描的技术,包括如下方案一和方案二:
76.方案一:存储设备每一次接入电子设备都要进行一次全盘遍历和全盘文件解析过程,具体可以包括如下步骤1-5:
77.步骤1、存储设备接入电子设备,所述电子设备的操作系统启动媒体扫描进程对所述存储设备存储的待扫描文件列表进行文件扫描。
78.步骤2、所述电子设备遍历所述存储设备存储的待扫描文件列表,得到所述存储设备待扫描文件列表中所有文件的全部信息。
79.步骤3、在遍历过程中,若所述电子设备遍历到所述存储设备存储的待扫描文件列表中的媒体文件,对所述媒体文件进行文件解析,得到所述媒体文件的解析结果。例如,对图片类型的媒体文件进行解析,生成得到所述图片类型的媒体文件的缩略图。
80.步骤4、所述电子设备对所述存储设备存储的待扫描文件列表的扫描结果暂存在所述电子设备的媒体数据库中。
81.步骤5、所述存储设备断开所述电子设备,所述电子设备会清除媒体数据库内存储的对所述存储设备进行文件扫描得到的对应的文件扫描结果。
82.该方案一应用场景多,扫描方法复杂度低,但是存在以下多个缺点:
83.缺点1:所述电子设备的文件扫描过程,将文件遍历和媒体文件解析放在一起进行,媒体文件解析的过程比较耗时。在所述存储设备容量大、媒体文件多的情况下,扫描时间较长,扫描效率低。
84.缺点2:在一些电子设备上,例如智慧屏,频繁插拔外部存储设备的场景较多,当前电子设备的文件扫描,会清除所述外部存储设备的扫描结果,而再次接入所述存储设备时,还是会重新进行全盘遍历和全盘解析,扫描时间较长,扫描效率低。
85.方案二:针对不同的存储设备,分别建立与所述存储设备对应的文件信息数据库,存储设备断开后,不清除对应的文件信息数据库中的内容,具体可以包括如下步骤1-5。
86.步骤1、存储设备接入电子设备,所述电子设备会遍历所述存储设备存储的待扫描文件列表的所有文件,获取所述存储设备存储的待扫描文件列表的所有文件信息。
87.步骤2、所述电子设备根据所述存储设备信息进行匹配,找到能够与所述存储设备所匹配的文件信息数据库,判断所述文件信息数据库中是否存在对应的文件解析结果。
88.步骤3、如果所述文件信息数据库中存在所述存储设备的文件解析结果,将所述存
在文件信息数据库中的数据与遍历得到的全盘文件信息进行比较,发现文件未被修改过,则跳过对所述文件进行文件解析的步骤。
89.步骤4、如果所述文件被修改过,则重新解析该文件。
90.步骤5、所述电子设备将向所述存储设备对应的所述文件信息数据库中写入对所述存储设备存储的待扫描文件列表的文件扫描结果,将所述文件扫描结果进行保存。
91.方案二可以避免再次接入存储设备时对未修改的文件反复解析,提升了文件扫描效率,但是也存在以下缺点:
92.缺点一:在所述存储设备存储容量大、所存储的文件数量多的情况下,所述电子设备对所述存储设备进行全盘遍历,获取所述存储设备的待扫描文件列表的全部文件信息的过程非常耗时。
93.综上所述,现有的文件扫描方法,在存储设备存储容量大、文件数量多的情况下,扫描时间长、扫描效率低,导致用户体验差。因此,在本技术提供的文件扫描方法用于解决上述技术问题。
94.为了便于理解本发明实施例,以下示例性列举本技术中文件扫描方法所应用的场景。可以包括如下两个场景:
95.场景一:将移动硬盘频繁插入智慧屏场景。在该场景中,所述移动硬盘对应本发明实施例中的存储设备,所述智慧屏对应本发明实施例中的电子设备。随着科技的发展,在传统电视的基础上衍生出了智慧屏。智慧屏承担着家庭中的多种角色,不仅仅是家庭影音娱乐中心,更是信息共享中心、控制管理中心、多设备交互中心。智慧屏通过接入移动硬盘展示移动硬盘内存储的文件信息,例如通过智慧屏观看移动硬盘中所存储的电影。智慧屏在接入移动硬盘后,会对所存储的文件进行扫描,然后播放移动硬盘内存储的电影。若同一个移动硬盘多次在同一块智慧屏上进行插拔操作,使用本技术中的文件扫描方法可以缩短用户等待文件扫描的时间,提高文件扫描效率,继而提升用户体验感。
96.场景二:将云盘中的文件同步和备份到个人电脑。在该场景中,所述云盘对应本发明实施例中的存储设备,所述个人电脑对应本发明实施例中的电子设备。在信息量剧增的当今,用户拥有很多的视频、图片、文本等资料想要在个人电脑上进行查看。同时,用户对即时查看个人资料的需求越来越高。在能保证资料不丢失且足够私密的条件下,用户愿意将个人资料上传到云盘,使用云盘进行存储。在将云盘中的文件同步和备份到个人电脑过程中,需要对云盘中的文件进行全盘扫描,为了提高文件扫描的速度,在对云盘进行全盘扫描前,使用本技术中的文件扫描方法可以更快速地排查出需要同步和备份的文件,避免全盘扫描,从而提高将云盘中的文件同步和备份到个人电脑的效率。
97.可以理解的是,上述两种应用场景的只是本发明实施例中的几种示例性的实施方式,本发明实施例中的应用场景包括但不仅限于以上应用场景。
98.下面结合附图对本技术的实施例进行描述。
99.基于上述提出的技术问题以及本技术中对应的应用场景,也为了便于理解本发明实施例,下面先对本发明实施例所基于的系统架构进行描述。请参考见图1,图1是本发明实施例提供的一种文件扫描的系统架构示意图,该系统用于解决存储设备在同一电子设备上频繁插拔文件扫描效率低的问题。该系统架构中可以包括存储设备和电子设备。其中,
100.存储设备101,本技术中指用于存储信息的设备,通常将信息数字化后在利用电、
磁或光学等方式的媒体加以存储。常见的存储设备包括,存储器、硬盘、u盘、云盘等设备。例如移动硬盘,移动硬盘多采用usb、ieee1394接口,可以随时插上或拔下,小巧而便于携带,可以较高的速度与系统进行数据传输。移动硬盘在接入电子设备的接口,可以电子设备的系统进行数据传输。
101.电子设备102,在本技术中指拥有操作系统且具有数据传输接口的电子设备。常见的电子设备包括,智慧屏、个人电脑、平板电脑等设备。例如智慧屏,智慧屏是在传统电视屏的基础上衍生出来的,智慧屏拥有usb接口、hdmi接口等数据传输接口,可以连接移动硬盘、u盘、usb读卡器等存储设备。当接入存储设备后,智慧屏会与存储设备建立数据传输,获取存储设备中的存储内容。
102.可以理解的是,图1中的一种文件扫描系统架构只是本技术实施例中的一种示例性的实施方式,本技术实施例中的文件扫描系统架构包括但不仅限于以上系统架构。
103.下面对本发明实施例所述电子设备中的文件扫描系统架构进行描述。请参考见图2,图2是本发明实施例提供的一种所述电子设备的文件扫描系统架构示意图,所述文件扫描系统架构包括请求处理模块201、遍历模块202、解析模块203和数据模块204。
104.请求处理模块201,负责处理来自外部的扫描请求。例如,请求模块中包括广播接收器和扫描管理器。广播接收器在接收到来自安卓内核挂载广播或第三方应用发起的扫描请求广播后,会向扫描管理器发送指示,激励扫描管理器向遍历模块中的请求处理器发出文件扫描请求。
105.遍历模块202负责遍历对应存储设备上修改或新增的目录及其直接子文件。例如,遍历模块中包括请求处理器、扫描任务队列和任务池。该模块在收到请求处理模块发来的消息后,请求处理器会根据存储设备的通用唯一识别码(uuid),查找对应存储设备的第一文件信息,然后根据第一文件信息中的第一目录信息找到目录的第一修改时间戳,再结合当前目录的第二修改时间戳进行比较,得到一个脏目录集合。根据扫描任务队列,将脏目录放入任务池,对脏目录进行遍历,当发现新增目录或新的脏目录时,把这些目录添加扫描任务队列中。
106.解析模块203负责解析文件。例如,在确定一个文件需要进行解析时,解析模块会创建文件对象,获取文件编码读取文件流,继而读取该文件的信息流,将其缓存到内存中,然后读取文件信息,处理过后完成解析过程,如解析后得到媒体文件的缩略图等。
107.数据模块204负责保存扫描的数据结果。例如,在完成文件的遍历和解析后,数据库会记录下本次文件扫描的扫描结果,包括文件解析结果和更新后的目录条目信息。数据库记录下的信息包括但不限于路径、父路径、修改时间戳、文件类型。
108.例如,假设在场景一情况下移动硬盘频繁接入智慧屏场景。在该场景下所述移动硬盘对应本发明实施例中的存储设备,所述智慧屏对应本发明实施例中的电子设备。移动硬盘再次插入智慧屏接口时,文件扫描的请求处理模块201接收到来自安卓内核或第三方应用发起的扫描请求广播后,向扫描管理器发送指示,会发起对移动硬盘内存储文件的扫描。
109.数据模块204会根据存储设备的通用唯一识别码(uuid)调取上一次对该移动硬盘扫描所记录下的目录信息,与本次接入时的目录信息进行对比,形成一个脏目录集合。
110.遍历模块202对脏目录集合进行遍历,获取得到脏目录下所有子目录及其直接子
文件的所有文件信息。继而找到被修改过的文件,解析模块203对被修改过的文件进行重新解析。
111.最后数据模块204会将此次扫描的结果进行更新并保存。若移动硬盘是第一次接入智慧屏,则把该移动硬盘内的所有文件根目录添加到脏目录集合进行遍历。
112.下面对本发明实施例所基于的具体方法架构进行描述。参见图3,图3是本技术实施例中的一种文件扫描方法的流程示意图,下面将结合附图3并基于上述图1中的文件扫描系统架构从存储设备和电子设备的交互侧对本技术实施例中的文件扫描方法进行描述。需要说明的是,为了更详细的描述本技术实施例中的文件扫描方法,本技术在各个流程步骤中描述了相应的执行主体为电子设备,但不代表本技术实施例只能通过所描述的执行主体进行对应的方法流程。
113.步骤s301:接收针对目标存储设备的扫描请求,获取第一文件信息。
114.具体地,所述第一文件信息包括上一次存储设备接入电子设备,电子设备对存储设备进行文件扫描后保存在数据库中的文件扫描结果的第一目录信息,所述第一目录信息为扫描结果中所有目录的信息,所述第一修改时间戳为上一次完成对所述存储设备进行文件扫描后,所记录下的目录的修改时间戳。例如,如图4、图5所示为首次接入文件信息示意图和再次接入文件信息示意图,存储设备首次接入时,电子设备中存储的文件信息为空,从而第一文件信息为空。当存储设备再次接入时,电子设备中存储的文件信息如图5所示,从而得到第一文件信息中的第一目录信息包括根目录“/”,a目录、c目录和x目录,a目录的第一修改时间戳为8:00,c目录的第一修改时间戳为8:00,x目录的第一修改时间戳为5:00。可以理解的是,上述第一文件信息可以是存储设备首次接入电子设备之后的扫描得到的,也可以是存储设备多次接入电子设备之后扫描得到的。
115.步骤s302:获取第二文件信息。
116.具体地,当完成上一次对所述存储设备的扫描过程,存储设备断开后,用户可能会对存储设备中存储的文件进行修改、删除或新增等。当该存储设备再次接入电子设备后,电子设备获取第二文件信息,所述第二文件信息包括本次存储设备接入电子设备,电子设备根据存储设备中存储的待扫描文件列表信息获取的第二目录信息,所述第二目录信息为待扫描文件列表的所有目录信息,所述第二修改时间戳为目录的最近的一次被修改记录下的修改时间。例如,如图4、图5所示为首次接入文件信息示意图和再次接入文件信息示意图,存储设备首次接入时,存储设备中存储的文件信息如图4所示,从而第二文件信息中第二目录信息包括根目录“/”、a目录、c目录和x目录,a目录的第二修改时间戳为8:00,c目录的第二修改时间戳为8:00,x目录的第二修改时间戳为5:00。当存储设备再次接入时,存储设备中存储的文件信息如图5所示,从而得到第二文件信息中的第二目录信息包括根目录“/”、a目录、c目录、x目录和e目录,a目录的第二修改时间戳为10:00,c目录的第二修改时间戳为9:00,x目录的第二修改时间戳为5:00和e目录的第二修改时间戳为10:00。
117.步骤s303:将所述第一目录信息与所述第二目录信息进行比较,生成脏目录集合。
118.具体地,电子设备将所述第一目录信息和所述第二目录信息中文件名相同的目录的所述第一修改时间戳与所述第二修改时间戳进行比较,如果两个时间戳不一致,则将该目录记为脏目录并将该目录添加到脏目录集合。例如,在图4、图5中,当存储设备首次接入时只将根目录“/”添加到脏目录集合。当存储设备再次接入时,对比a目录、c目录和x目录的
第一修改时间戳与第二修改时间戳发现不一致,则将a目录和c目录添加到脏目录集合。
119.需要进一步说明的是,从所述脏目录集合中提取脏目录,对所述脏目录下的直接子文件进行遍历,这样做可以大大减少对所述存储设备存储的待扫描文件列表中进行文件遍历的文件数量。所述直接子文件包括所述脏目录下的子目录和子文件。例如,在图5中电子设备存储的文件信息中,“/”为根目录“/”根目录的直接子文件为a目录、x目录、c目录。
120.通过使用本发明实施例的方法,当所述电子设备再次接入存储设备时,电子设备能够更加快速地找到被修改或新增文件,对所述被修改或新增文件进行文件解析,更新所述电子设备数据库中已扫描文件列表的扫描结果。提供了一种新的文件扫描方式,减少再次插入所述存储设备等待所述电子设备对所述存储设备存储的待扫描文件列表的文件扫描时间,提高了文件扫描效率,提升用户体验。
121.电子设备在对所述存储设备存储的待扫描文件列表进行文件扫描时,所述电子设备的操作系统可以是安卓系统也可以是其他操作系统,在所述电子设备接收到文件扫描请求,只要首先形成脏目录集合并只需遍历脏目录下的所述直接子文件,都可以大大减少待遍历的文件数量,都可以解决现有技术中的问题,并取得相应的效果。
122.下面对本发明实施例所基于的具体方法架构进行描述。参见图6a和图6b,图6a是本技术实施例中的一种文件扫描生成脏目录集合详细流程示意图,图6b是本发明实施例提供的一种文件扫描流程示意图,下面将结合附图6a和图6b并基于上述图1中的文件扫描系统架构从存储设备和电子设备的交互侧对本技术实施例中的文件扫描方法进行描述。需要说明的是,为了更详细的描述本技术实施例中的文件扫描方法,本技术在各个流程步骤中描述了相应的执行主体为电子设备,但不代表本技术实施例只能通过所描述的执行主体进行对应的方法流程。
123.步骤s601:接收针对目标存储设备的扫描请求。
124.具体地,本发明实施例中电子设备在对存储设备进行文件扫描前需要接收到针对目标存储设备的扫描请求。电子设备在接收到扫描请求之前,不同存储设备接入电子设备要进行挂载。因此存储设备接入电子设备后,电子设备针对所述存储设备分析出所述存储设备存储的文件系统结构,获得所述电子设备的操作系统支持的文件系统类型。操作系统根据所述存储设备的文件系统类型调用对应的驱动,处理其元数据,然后将信息附加到目录树上呈现出来,实现所述电子设备的操作系统将所述存储设备纳入自己的文件系统中,完成挂载操作。在完成挂载操作后,操作系统(如安卓系统)会发送此挂载广播,电子设备接收挂载广播后,会针对目标存储设备进行文件扫描。
125.步骤s602:获取第一文件信息。
126.在一种可能的实现方式中,所述获取第一文件信息,包括,根据所述存储设备的通用唯一识别码(uuid)查找与所述uuid匹配的所述第一文件信息。具体地,由于电子设备会为每一个存储设备设置一个uuid且每一个存储设备所对应的uuid都是不同的,因此当存储设备再次接入电子设备时,电子设备会根据这个uuid在数据库中查找对应存储设备的最新一次的扫描结果。需要说明的是,所述第一文件信息包括上一次存储设备接入电子设备,保存在电子设备数据库中一些目录的信息。根据所述第一文件信息得到所述存储设备存储的已扫描文件列表的第一目录信息,所述第一目录信息包括所述已扫描文件列表中的每一个目录的第一修改时间戳,所述第一修改时间戳也就是完成文件扫描后保存在所述电子设备
数据库中的每一个目录的上一次的修改时间戳。
127.步骤s603:获取第二文件信息。
128.具体地,在所述电子设备的系统中挂载所述存储设备后,所述电子设备的操作系统中将所述存储设备纳入自己的文件系统中,电子设备可以获取第二文件信息。所述第二文件信息包括所述目标存储设备存储的待扫描文件列表中的一些目录信息,所述第二目录信息包括所述待扫描文件列表中的每一个目录的第二修改时间戳,所述第二修改时间戳也就是所述存储设备存储的待扫描文件列表中的每一个目录当前最新一次被改动后所记录下来的修改时间戳。
129.可选的,当获取完第一文件信息与第二文件信息后,执行步骤s6031,将获取得到的第一文件信息中的第一修改时间戳用t表示,获取得到的第二修改时间戳用t’表示。
130.步骤s604:将所述第一目录信息与所述第二目录信息进行比较,生成脏目录集合。
131.具体地,电子设备获取对该存储设备进行文件扫描的上一次的扫描结果后,根据扫描结果可以得到所有目录的上一次的修改时间戳,将所有目录对应的上一次的修改时间戳和当前最新的修改时间戳进行比较,如果发现文件名相同的目录的上一次的修改时间戳与当前最新的修改时间戳不一致,则执行步骤s6042,将该目录添加到脏目录集合,生成一个初始的脏目录集合。如果文件名相同的目录的上一次的修改时间戳与当前最新的修改时间戳一致,则执行步骤s6041,表示该目录及其直接子文件未被修改,且没有新增文件。
132.在一种可能实现的方式中,所述生成脏目录集合,包括,在所述第一目录信息中不存在目录的情况下,将所述存储设备存储的待扫描文件列表的根目录添加到所述脏目录集合。具体地,当存储设备是第一次接入电子设备,电子设备的数据库中没有对该存储设备的扫描结果的记录,在这种情况下,初始时只用将存储设备中存储的文件的根目录记为脏目录。然后对根目录进行遍历,在遍历过程若发现新增目录或新的脏目录,则再将新增目录或新的脏目录添加到脏目录集合中。
133.在一种可能实现的方式中,所述将所述第一目录信息与所述第二目录信息进行比较之后,还包括,从第一目录信息中删除待删除目录,以及删除所述待删除目录对应的扫描结果;所述待删除目录为出现在所述第一目录信息且未出现在所述第二目录信息的目录。具体地,当存储设备拔出后,若用户删除了一些存储设备中存储的目录,则再次接入电子设备时,这些被删除的目录就没有当前最新的修改时间戳,但在电子设备的数据库中会有这些目录的上一次的修改时间戳。当电子设备发现一个目录只有上一次的修改时间戳而没有当前最新的修改时间戳时,就判断该目录已被删除,电子设备就在自己的数据库中将这些目录相关的信息全部删除。
134.步骤s605:判断脏目录集合是否为空集。
135.具体地,电子设备在开始对所述脏目录集合进行文件扫描时,首先判断所述脏目录集合是否为空集合。在一种可能实现的方式中,当所述脏目录集合为空集,则结束对所述待扫描文件列表的文件扫描。具体地,当存储设备拔出后,若用户未对存储设备中存储的文件或目录进行改动,则存储设备中所存储的文件或目录的修改时间戳不会发生改变。当存储设备再次接入电子设备,电子设备在比较文件名相同的目录的上一次的修改时间戳与当前最新的修改时间戳时,若所有目录对应的两个时间戳都一致,则确定为没有被改动的目录,执行步骤s6051,结束对该存储设备进行文件扫描的过程。在一种可能实现的方式中,当
所述脏目录集合为非空集合,对所述脏目录集合中的脏目录进行文件扫描。具体地,当存储设备拔出后,若用户对存储设备中存储的文件或目录进行改动,则会导致被改动的文件或目录的修改时间戳发生变化。因此导致一些目录的上一次的修改时间戳与当前最新的修改时间戳不一致,则电子设备就执行步骤s6052,从所述脏目录集合中取出所述脏目录,然后对所述脏目录进行文件扫描。需要说明的是,所述从所述脏目录集合中取出所述脏目录进行文件扫描,这个过程可以对多个所述脏目录进行同时处理。
136.在一种可能的实现方式中,所述对所述脏目录集合中的脏目录进行文件扫描,包括,将所述脏目录集合中的脏目录的所述第一修改时间戳与第二修改时间戳进行比较;将所述第一修改时间戳与所述第二修改时间戳一致的脏目录从所述脏目录集合中删除。具体地,由于电子设备可以同时对多个脏目录进行并行的文件扫描,因此在对每一个脏目录进行文件扫描前,执行步骤s6053,可再次确定脏目录的上一次的修改时间戳与当前最新的修改时间戳是否一致,如果一致则将所述脏目录从脏目录集合中删除,可以避免对脏目录进行重复扫描。
137.步骤s606:记录所述脏目录的属性信息。
138.具体地,电子设备记录所述脏目录的属性信息;所述属性信息包括所述脏目录的第二修改时间戳。在对被改动的目录进行文件扫描前,记录下被改动的目录的当前最新的修改时间戳,以便于之后对数据库中的文件扫描结果进行更新。
139.步骤s607:遍历所述脏目录下的所有直接子文件。
140.具体地,电子设备遍历所述脏目录下的所有直接子文件;所述直接子文件包括所述脏目录下的子文件和子目录。在对脏目录进行文件扫描时,最初只遍历脏目录的直接子文件,不用去考虑直接子文件下对应的文件和目录。原因在于本发明实施例中在确定初始脏目录集合时,已经将所有时间戳有变化的目录(包括子目录)均确定为了脏目录,且本发明实施例会对所有脏目录下的直接子文件和子目录进行扫描,因此只需要针对每个脏目录下的直接子文件下的文件和目录进行扫描即可以覆盖到存储设备中所有时间戳发生变化的目录或文件以及新增目录。
141.在一种可能实现的方式中,获取第一子文件信息;所述第一子文件信息包括所述已扫描文件列表中所述脏目录的所述直接子文件的第一子修改时间戳;获取第二子文件信息;所述第二子文件信息包括所述待扫描文件列表中所述脏目录的所述直接子文件的第二修改时间戳;将文件名相同的所述直接子文件的所述第一子文件信息与所述第二子文件信息进行比较,确定被改动的所述直接子文件。具体地,电子设备在遍历脏目录下的直接子文件时,电子设备先执行步骤s6071,获取第一子文件信息和第二子文件信息。需要说明的是,所述第一子文件信息包括所述目标存储设备存储的已扫描文件列表中所述脏目录的所述直接子文件的上一次的修改时间戳以及所述直接子文件扫描结果的其他信息。所述第二子文件信息包括所述目标存储设备存储的待扫描文件列表中所述脏目录的所述直接子文件的当前最新的修改时间戳以及所述直接子文件的其他信息。
142.接下来电子设备执行步骤s6072,电子设备将文件名相同的所述脏目录的所述直接子文件的上一次的修改时间戳与当前最新的修改时间戳进行比较。因为当存储设备拔出后,若用户对存储设备中存储的脏目录的直接子文件进行改动,则会导致直接子文件的修改时间戳发生变化。将直接子文件的上一次的修改时间戳与当前最新的修改时间戳进行比
较,如果两个时间戳不一致,则判断该直接子文件被修改过。当直接子文件的上一次的修改时间戳与当前最新的修改时间戳一致,则执行步骤s6073,电子设备继续遍历脏目录下的其他直接子文件。当直接子文件的上一次的修改时间戳与当前最新的修改时间戳不一致,则确定该直接子文件被改动过。
143.在一种可能实现的方式中,所述确定被改动的所述直接子文件,包括,确定所述直接子文件为被修改直接子文件;所述被修改直接子文件为所述第一子文件信息与所述第二子文件信息中文件名相同且第一子修改时间戳与所述第二子修改时间戳不一致的直接子文件;确定所述直接子文件为被删除直接子文件;所述被删除直接子文件为未出现在所述第二子文件信息中且出现在所述第一子文件信息中的直接子文件。具体地,如果文件名相同的直接子文件有上一次的修改时间戳和当前最新的修改时间戳且两个修改时间戳不一致,则说明在存储设备断开后,用户修改过该直接子文件,将该直接子文件确定为被修改直接子文件。当文件名相同的直接子文件只存在上一次的修改时间戳而不存在当前最新的修改时间戳时,则说明存储设备断开后,用户删除了该直接子文件,将该直接子文件确定为被删除直接子文件。
144.在一种可能实现的方式中,删除所述已扫描文件列表的扫描结果中所述被删除直接子文件的信息。具体地,当电子设备发现一个直接子文件只有上一次的修改时间戳而没有当前最新的修改时间戳时,就判断该目录已被删除,电子设备就在自己的数据库中将这些直接子文件相关的信息全部删除。
145.电子设备找到被改动的直接子文件后,执行步骤s6074。在一种可能实现的方式中,判断所述被修改直接子文件是否为目录;若否,则确定所述被修改直接子文件为被修改子文件,获取所述被修改子文件的文件属性,对所述被修改子文件进行文件解析并在所述已扫描文件列表的扫描结果中更新所述被修改子文件的扫描结果;若是,则确定所述被修改直接子文件为被修改子目录,获取所述被修改子目录的目录属性,将所述被修改子目录的所述第一子修改时间戳置为负数,并将所述被修改子目录的扫描结果插入所述已扫描文件列表的扫描结果。具体地,当找到脏目录下被改动的直接子文件后,电子设备执行步骤s6075,对被修改子文件进行重新解析,之后执行步骤s6076,在电子设备的数据库中更新该被修改子文件的文件扫描结果。当发现被修改子目录时,电子设备执行s6077,将被修改子目录的记录的修改时间戳置为一个负数,因为正常情况下修改时间戳的数值是一个大于0的数字,将其置为负数就代表着将该被修改子目录标记为脏。然后电子设备执行步骤s6078,将该被修改子目录插入扫描结果,接下来电子设备执行步骤s6079,判断该目录是否插入成功,若插入成功则该被修改子目录就为新增目录,就执行步骤s60710,将其添加到脏目录集合中。
146.步骤s608:更新当前所述脏目录的扫描结果。
147.具体地,电子设备在遍历完所述脏目录下的所有所述直接子文件后,就把脏目录的上一次的修改时间戳的数值改为当前最新的修改时间戳的数值,最终更新了电子设备的数据库中所述脏目录的扫描结果。
148.在一种可能的实现方式中,将t3
-△
t时间段内的所有扫描结果第一修改时间戳置为负数;所述t3为接收到所述存储设备卸载消息的时间;所述

t为预设的时间段。可选的,所述

t为根据不同系统得出相应的经验时间差,也即是根据电子设备上运行的不同操作
系统的时间差。需要说明的是,通常

t为大于或等于(t3-t1)的经验值,t1为存储设备与电子设备断开的时间。完成上述步骤s601-s608实现了更快速地对文件进行扫描。但在实际使用过程中发现,在外接存储设备热插拔时,文件系统接口的返回结果可能会存在一些异常情况,这会导致扫描结果不一致,因此在本实施例中设计了额外的机制来保证文件扫描的稳定性。本发明实施例中,通过将(t3
-△
t)时间段内的所有扫描结果中的目录的第一修改时间戳置为负数,当电子设备再次对所述存储设备进行文件扫描时,由于其为负值的时间戳必定会与正常情况下的任意时间戳不一致,所以会在形成脏目录的过程中被确定为脏目录,因此会重新遍历和解析这些文件。通过这种方式可以避免存储设备热插拔和异常中断时,调用文件系统接口得到不一致结果的问题,提升了文件扫描的稳定性,提升了实际场景下的可使用性。
149.需要说明的是,外接存储设备与电子设备断开的时间记为t1,外接存储设备上文件系统在虚拟文件系统(vfs)上卸载的时间为t2,电子设备收到卸载消息的时间为t3。因此把t3-t1写入数据模块中的扫描结果进行有效处理,就可以避免产生不一致扫描结果的问题。具体的操作是,根据不同系统得出相应的经验时间差

t,需要说明的是,通常

t大于或等于(t3-t1),则t3
-△
t到t3时间段内的扫描到的目录都将其第一修改时间戳改为负数,通过这种方式告知下次扫描时,重新遍历和解析这些文件。
150.下面为了更详细的描述本技术实施例中的文件扫描方法将结合应用的场景一以及图4首次接入文件信息示意图、图5再次接入文件信息示意图,对本实施例进行详细描述。
151.在场景一下,移动硬盘对应本发明实施例中存储设备,智慧屏对应本发明实施例中电子设备。当移动硬盘第一次接入智慧屏时,首先移动硬盘在智慧屏上挂载,使得智慧屏的操作系统可以访问移动硬盘中的文件和目录。在完成移动硬盘挂载后,根据移动硬盘的通用唯一识别码(uuid)在数据库中查找所述移动硬盘对应的第一文件信息,然后操作系统获取所述第二文件信息,如图7a所示,图7a为移动硬盘第一次插入智慧屏的第一文件信息与第二文件信息示意图,图中此时第一文件信息中没有第一目录信息,第二文件信息的第二目录信息中在根目录下有a目录、x目录和c目录。将第二文件信息中的根目录添加到脏目录集合,通常情况下根目录为“/”。此时脏目录集合中只有一个脏目录即为根目录“/”。
152.然后获取根目下的第一子文件信息与第二子文件信息,如图7b所示,图7b为存储设备首次接入根目录下的直接子文件信息示意图,图中第一子文件信息中没有直接子文件信息,第二子文件信息中有a其第二修改时间戳为8:00、x其第二修改时间戳为5:00,c其第二修改时间戳为8:00。然后得到a、x、c均为目录,分别将这三个目录的第二子修改时间戳置为负数,然后将三个目录的扫描结果插入已扫描文件列表的扫描结果,由于移动硬盘第一次插入智慧屏,所以已扫描文件列表的扫描结果为空,这三个目录的扫描结果都能够插入已扫描文件列表的扫描结果。接下来将这三个目录添加到脏目录集合,并记录下a目录的第二修改时间戳改为8:00,x目录的第二修改时间戳改为5:00,c目录的第二修改时间戳改为8:00。
153.然后获取a目录、x目录和c目录的直接子文件的第一子文件信息与第二子文件信息,如图8a所示,图8a为a目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中没有直接子文件信息,第二子文件信息中有b其第二子修改时间戳为7:00,c其第二子修改时间戳为8:00。接下来得到b具有文件属性,则智慧屏会获取b的文件
属性并对该文件进行解析,然后更新子文件的已扫描文件列表的扫描结果,同时更新第一子文件信息中有b文件的第一子修改时间戳为7:00。
154.接下来得到c具有目录属性,则智慧屏会获取c目录的目录属性并将其第一子修改时间戳置为负数,将c目录扫描结果插入已扫描文件列表的扫描结果,由于c目录已经在脏目录集合中所以插入失败。在遍历完a目录的直接子文件后,将a目录的第一修改时间戳改为8:00。
155.获取c目录直接子文件的第一子文件信息与第二子文件信息,如图8b所示,图8b为c目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中没有直接子文件信息,第二子文件信息中有d其第二子修改时间戳为8:00。然后得到d具有文件属性,则智慧屏会获取d的文件属性并对该文件进行解析,然后更新子文件的已扫描文件列表的扫描结果,同时更新第一子文件信息中有d文件的第一子修改时间戳为8:00。在遍历完c目录的直接子文件后,将c目录的第一修改时间戳改为8:00。
156.获取x目录直接子文件的第一子文件信息与第二子文件信息,如图8c所示,图8c为x目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中没有直接子文件信息,第二子文件信息中有y其第二子修改时间戳为5:00。接下来得到y具有文件属性,则智慧屏会获取y的文件属性并对该文件进行解析,然后更新子文件的已扫描文件列表的扫描结果,同时更新第一子文件信息中有y文件的第一子修改时间戳为5:00。在遍历完x目录的直接子文件后,将x目录的第一修改时间戳改为5:00。
157.如图9所示为存储设备首次接入文件扫描示意图,如图所示当移动硬盘第一次插入智慧屏,智慧屏完成了对移动硬盘的文件扫描后,此时在智慧屏数据库中保存下对已扫描文件列表的文件扫描结果。
158.当所述移动硬盘再次接入智慧屏后,首先移动硬盘在智慧屏上挂载,使得智慧屏的操作系统可以访问移动硬盘中的文件和目录。在完成移动硬盘挂载后,根据移动硬盘的通用唯一识别码(uuid)在数据库中查找所述移动硬盘对应的第一文件信息,操作系统获取所述第一文件信息和所述第二文件信息,如图10所示,图10为移动硬盘再次插入智慧屏的第一文件信息与第二文件信息示意图,图中此时第一文件信息中第一目录信息有a目录、x目录和c目录,第二文件信息中的第二目录信息中有a目录、c目录、x目录和e目录。对比文件名相同的第一修改时间戳与第二修改时间戳,将两个时间戳不一致的目录放入脏目录集合,在这里将a目录和c目录放入脏目录集合。此时脏目录集合中有两个脏目录,在对脏目录进行遍历时,脏目录不分先后顺序可以同时进行,接下来就以a目录和c目录同时扫描举例。
159.从脏目录集合中取出a目录、c目录,把a目录、c目录分别的第一修改时间戳与第二修改时间戳进行比较确定此时a、c目录为脏目录,接下来分别记录下a的第二修改时间戳为10:00,c目录的第二修改时间戳为9:00。
160.获取a目录、c目录直接子文件的第一子文件信息与第二子文件信息,如图11a所示,图11a为再次插入a目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中有b其第一子修改时间戳为7:00,c其第一子修改时间戳为8:00,第二子文件信息中有b其第二子修改时间戳为7:00,c其第二子修改时间戳为9:00,e其第二子修改时间戳为10:00。把文件名相同的直接子文件的第一子修时间戳与第二子修改时间戳进行比较,得到c、e两个的第一子修时间戳与第二子修改时间戳不一致。
161.接下来得到c为目录、e也为目录,然后将这两个目录的第一子修改时间戳置为负数,将c目录和e目录插入已扫描文件列表的扫描结果,由于c目录参与了移动硬盘首次接入的文件扫描过程所以插入失败。相对于上一次的扫描结果,e目录为新增目录,所以能够成功插入已扫描文件列表的扫描结果,接下来将e目录添加到脏目录集合并将a目录的第一修改时间戳修改为记录下的第二修改时间戳10:00。
162.如图11b所示,图11b为再次插入c目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中有d其第一子修改时间戳为8:00,第二子文件信息中有d其第二子修改时间戳为8:30。把第一子修时间戳与第二子修改时间戳进行比较,得出d的第一子修时间戳与第二子修改时间戳不一致。接下来得到d为文件,则智慧屏会获取d的文件属性并对该文件进行解析,然后更新子文件的已扫描文件列表的扫描结果,同时更新第一子文件信息中有d文件的第一子修改时间戳为8:30并将c目录的第一修改时间戳修改为记录下的第二修改时间戳9:00。
163.从脏目录集合中取出e脏目录,把e目录的第一修改时间戳与第二修改时间戳进行比较确定此时e目录为脏目录,接下来记录下e的第二修改时间戳为10:00。
164.如图11c所示,图11c为e目录直接子文件的第一子文件信息与第二子文件信息示意图,图中第一子文件信息中没有直接子文件信息,第二子文件信息中有f其第二子修改时间戳为9:30。f的第一子修改时间戳与第二子修改时间戳进行比较,得出f的第一子修时间戳与第二子修改时间戳不一致。接下来得到f为文件,则智慧屏会获取f的文件属性并对该文件进行解析,然后更新子文件的已扫描文件列表的扫描结果,同时更新第一子文件信息中有f文件的第一子修改时间戳为9:30并将e目录的第一修改时间戳修改为记录下的第二修改时间戳10:00。
165.如图12所示为存储设备再次接入文件扫描示意图,如图所示当移动硬盘再次插入智慧屏,智慧屏完成了对移动硬盘的文件扫描后,此时在智慧屏数据库中更新对已扫描文件列表的文件扫描结果。
166.本发明实施例在实际测试中,为了避免文件解析带来的影响,将文件解析从文件扫描中拆分开来,放在实际需要解析的环节中,所以可以理解的是实际测试中文件扫描的文件解析不耗时,着重对比一下文件遍历过程优化效果。以下示例性示出一个具体的测试过程和结果。
167.假设,测试使用了一块4t大小的移动硬盘(即存储设备),移动硬盘中存储了约1500个目录和约30000个文件,数据共2t左右。当移动硬盘接入电子设备,电子设备遍历完所有文件花费约110秒,而在没有修改任何文件的情况下,第二次遍历只消耗了约6秒。当存储设备上修改比例达到约10%时,遍历消耗约21秒,而修改比例达到约50%时,遍历时间为约57秒。需要说明的是所有测试数据都为综合多次测量的平均结果,修改比例是基于目录修改比例和文件修改比例的综合结果。
168.从上述的测试结果来看,通过使用本发明实施例的文件扫描方法,再次扫描存储设备时,通过减少遍历的文件数,从而达到缩短遍历文件的时间,提升文件扫描整体效率。
169.上述详细阐述了本发明实施例的方法,下面提供了本发明实施例的相关装置。
170.请参见图13,图13是本发明实施例提供的一种文件扫描装置的结构示意图,该文件扫描装置130可以包括接收模块1301、第一获取模块1302、第二获取模块1303、处理模块
1304、删除模块1305、记录模块1306,其中各个单元的详细描述如下。
171.接收模块1301,用于接收针对目标存储设备的扫描请求;
172.第一获取模块1302,用于获取第一文件信息;所述第一文件信息包括所述目标存储设备存储的已扫描文件列表的第一目录信息,所述第一目录信息包括所述已扫描文件列表的每一个目录的第一修改时间戳;
173.第二获取模块1303,用于获取第二文件信息,所述第二文件信息包括所述目标存储设备存储的待扫描文件列表的第二目录信息,所述第二目录信息包括所述待扫描文件列表中的每一个目录的第二修改时间戳;
174.处理模块1304,用于将所述第一目录信息与所述第二目录信息进行比较,生成脏目录集合;所述脏目录集合中的脏目录为所述第一目录信息与所述第二目录信息中文件名相同且所述第一修改时间戳与所述第二修改时间戳不一致的目录或出现在所述第二目录信息且未出现在所述第一目录信息的目录。
175.在一种可能实现的方式中,所述第一获取模块1302,具体用于:根据所述存储设备的通用唯一识别码(uuid)查找与所述uuid匹配的所述第一文件信息。
176.在一种可能实现的方式中,所述处理模块1304,具体用于:在所述第一目录信息中不存在目录的情况下,将所述存储设备存储的待扫描文件列表的根目录添加到所述脏目录集合。
177.在一种可能实现的方式中,所述装置还包括:删除模块1305,用于所述将所述第一目录信息与所述第二目录信息进行比较之后,从第一目录信息中删除待删除目录,以及删除所述待删除目录对应的扫描结果;所述待删除目录为出现在所述第一目录信息且未出现在所述第二目录信息的目录。
178.在一种可能实现的方式中,所述处理模块1304,具体用于:当所述脏目录集合为空集,结束对所述待扫描文件列表的文件扫描。
179.在一种可能实现的方式中,所述处理模块1304,具体用于:当所述脏目录集合为非空集合,对所述脏目录集合中的脏目录进行文件扫描。
180.在一种可能实现的方式中,所述处理模块1304和所述删除模块1305,具体用于:处理模块1304,用于将所述脏目录集合中的脏目录的所述第一修改时间戳与第二修改时间戳进行比较;删除模块1305,用于将所述第一修改时间戳与所述第二修改时间戳一致的脏目录从所述脏目录集合中删除。
181.在一种可能实现的方式中,所述装置还包括:记录模块1306,用于记录所述脏目录的属性信息;所述属性信息包括所述脏目录的第二修改时间戳。
182.在一种可能实现的方式中,所述处理模块1304,具体用于:遍历所述脏目录下的所有直接子文件;所述直接子文件包括所述脏目录下的子文件和子目录。
183.在一种可能实现的方式中,所述第一获取模块1302、所述第二获取模块1303和所述处理模块1304,具体用于:第一获取模块1302,用于获取第一子文件信息;所述第一子文件信息包括所述已扫描文件列表中所述脏目录的所述直接子文件的第一子修改时间戳;第二获取模块1303,用于获取第二子文件信息;所述第二子文件信息包括所述待扫描文件列表中所述脏目录的所述直接子文件的第二修改时间戳;处理模块1304,用于将文件名相同的所述直接子文件的所述第一子文件信息与所述第二子文件信息进行比较,确定被改动的
所述直接子文件。
184.在一种可能实现的方式中,所述处理模块1304,具体用于:确定所述直接子文件为被修改直接子文件;所述被修改直接子文件为所述第一子文件信息与所述第二子文件信息中文件名相同且第一子修改时间戳与所述第二子修改时间戳不一致的直接子文件;确定所述直接子文件为被删除直接子文件;所述被删除直接子文件为未出现在所述第二子文件信息中且出现在所述第一子文件信息中的直接子文件。
185.在一种可能实现的方式中,所述删除模块1305,具体用于:删除所述已扫描文件列表的扫描结果中所述被删除直接子文件的信息。
186.在一种可能实现的方式中,所述处理模块1304,具体用于:判断所述被修改直接子文件是否为目录;若否,则确定所述被修改直接子文件为被修改子文件,获取所述被修改子文件的文件属性,对所述被修改子文件进行文件解析并在所述已扫描文件列表的扫描结果中更新所述被修改子文件的扫描结果;若是,则确定所述被修改直接子文件为被修改子目录,获取所述被修改子目录的目录属性,将所述被修改子目录的所述第一子修改时间戳置为负数,并将所述被修改子目录的扫描结果插入所述已扫描文件列表的扫描结果。
187.在一种可能实现的方式中,所述处理模块1304,具体用于:
188.确定遍历完所述脏目录的所有所述直接子文件;更新当前所述脏目录的扫描结果;所述当前脏目录的扫描结果包括所述脏目录的第一修改时间戳。
189.在一种可能实现的方式中,所述处理模块1304,具体用于:将t3
-△
t时间段内的所有扫描结果第一修改时间戳置为负数;所述t3为接收到所述存储设备卸载消息的时间;所述

t为预设的时间段。需要说明的是,本发明实施例中所描述的文件扫描装置130中各功能模块能参见上述图6a和图6b所述的方法实施例中步骤s601-步骤s608的相关描述,此处不再赘述。
190.本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任意一种文件扫描方法的部分或全部步骤。
191.本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种文件扫描方法的部分或全部步骤。
192.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
193.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
194.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,
可以是电性或其它的形式。
195.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
196.另外,在本技术各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
197.上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本技术各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:u盘、移动硬盘、磁碟、光盘、只读存储器(read-only memory,缩写:rom)或者随机存取存储器(random access memory,缩写:ram)等各种可以存储程序代码的介质。
198.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1