本技术实施例涉及电子设备领域,更具体地,涉及一种文件扫描方法、文件扫描装置和电子设备。
背景技术:
1、电子设备的操作系统会对媒体文件进行扫描,从而将媒体文件的最新数据信息更新到数据库中,以便于应用或进程能够通过数据库使用相应的媒体文件。
2、文件扫描过程中,操作系统需要对特定目录下的所有文件和文件夹进行遍历扫描,从而找到需要更新数据信息的文件。随着电子设备上存储的文件数量的增多,文件扫描过程的开销和功耗较大,影响用户的使用体验。
技术实现思路
1、本技术实施例提供一种文件扫描方法、文件扫描装置和电子设备,能够降低文件扫描过程中的开销和功耗。
2、第一方面,提供了一种文件扫描方法,应用于电子设备,包括:获取第一信息,所述第一信息用于确定待扫描的第一目录,第一节点和第二节点是所述第一目录下的节点,所述第一节点是所述第二节点的父节点,所述第一节点对应文件夹;当遍历到所述第二节点时,若所述第二节点对应文件,确定所述第一节点对应的文件夹的数据信息是否发生变化,所述文件夹的数据信息包括文件夹的修改时间;当所述第一节点对应的文件夹的数据信息未发生变化时,跳过对所述第二节点对应的文件在文件系统中的数据信息相对于所述第二节点对应的文件在数据库中的数据信息是否发生变化的比对,文件的数据信息包括文件的修改时间、文件类型、文件存储路径、文件大小中的至少一项。
3、第一信息可以是触发文件扫描的信息,执行文件扫描的模块或单元可以根据该第一信息确定待扫描的目录为第一目录。第一目录是文件系统中的目录,文件系统是电子设备的操作系统中负责对存储在存储器中的文件和数据进行管理和组织的系统(文件系统也称文件管理系统),文件系统按照一定的结构组织文件,例如树状结构组织。树状结构的每一个节点对应文件夹(其中,文件夹又可以称为目录或子目录)或文件。第一目录指向树状结构的一个节点,该节点可以对应整个文件系统的根目录(也就是该节点是整个文件系统的目录树的根节点),这样,待扫描的第一目录可以为整个文件系统中所有的文件和文件夹;该节点也可以对应根目录下的任意一级子目录,这样待扫描的第一目录可以为文件系统中的部分文件或文件夹。进行文件扫描时,需要对该第一目录指向的节点以及该节点下级所有节点对应的文件夹或文件进行扫描。第一信息可以为广播等信息,也可以为其他形式的指示信息。第一目录对应的待扫描的文件或文件夹存储在存储器中,该存储器可以为电子设备系统内存或sd卡,也可以为插入电子设备的外接存储设备,也可以为与电子设备连接的其他设备的存储介质或单元。
4、第一节点是第一目录下的节点可以理解为第一节点是第一目录对应的第一目录树的根节点,也可以是该根节点下的各级节点。
5、如果文件被修改,则文件的修改时间会发生变化,同时,该文件的父文件夹的修改时间也会发生变化,从而可以根据父文件夹的修改时间是否发生变化,确定父文件夹下是否存在被修改的文件。如果文件夹下不存在被修改的文件,则跳过对这些文件的扫描可以减少文件扫描的开销。
6、遍历到某一节点可以理解为进行文件扫描时,扫描进度到了某一个节点对应的文件或文件夹。遍历到某一节点也相当于扫描到某一节点(的文件或文件夹)或枚举到某一节点(的文件或文件夹)或访问某一节点(的文件或文件夹)。
7、在进行文件扫描时,可以按照一定的顺序遍历待扫描目录(第一目录)对应的第一目录树的各个节点的数据,该第一目录树可以包括根节点,第一节点和第二节点均是第一目录树中的节点。遍历到对应文件的节点时,可以根据其父节点对应的文件夹的数据信息是否发生变化,确定是否对该节点进行数据信息的比对。当其父节点对应的文件夹的数据信息未发生变化时,可以跳过对该节点的数据信息的比对。当其父节点对应的文件夹的数据信息发生变化时,需要遍历文件夹下的各个节点并对每个节点对应的文件或文件夹的数据信息是否发生变化进行比对,并将数据信息的变化更新到数据库中。
8、可选的,如果遍历到对应文件夹的节点(扫描到文件夹),也就是第二节点对应文件夹时,则需要判断该第二节点对应的文件夹的数据信息是否发生变化,如果文件夹的数据信息发生变化,需要更新该文件夹的数据信息到数据库,从而避免对下次文件扫描的影响,如果未更新该文件夹的数据信息,下次扫描时即使文件夹下的文件未发生变化,该文件夹的数据信息仍然会被判断为发生变化,则该文件夹下的文件需要被扫描。如果文件夹的数据信息未发生变化,可以通过各种方式标记该文件夹的数据信息未发生变化,例如通过将文件夹的标识或文件夹对应的节点的标识加入特定的列表,或者每次文件扫描过程中扫描到文件夹时,可以为该文件夹添加一个字段标识该文件夹的数据信息是否发生变化,也就是存储为该次扫描时文件夹的属性信息,扫描到该文件夹下的文件时,通过读取该文件夹的属性信息判断该文件夹的数据信息是否发生变化,该属性信息每次扫描时会更新。
9、结合第一方面,在第一方面的一些实现方式中,当所述第一节点对应的文件夹的类型为叶子文件夹时,所述叶子文件夹是不具备子文件夹的文件夹,所述方法还包括:跳过对所述第二节点的兄弟节点的遍历。
10、在该实施例中,可以进一步对第一节点对应的文件夹的类型进行确定,如果第一节点对应的文件夹是叶子文件夹,可以在遍历到第二节点后,直接跳过第二节点的兄弟节点的遍历,第二节点可以是媒体库遍历的第一节点的第一个子节点。由于叶子文件夹下没有其他文件夹,如果文件夹的数据信息没有发生变化,则文件的数据信息必定没有发生变化,在这时跳过对文件夹下的文件的数据信息的比对以及遍历到第一个文件节点后跳过对其他文件节点的遍历可以减小文件扫描带来的开销和功耗。
11、结合第一方面,在第一方面的一些实现方式中,当所述第一节点对应的文件夹的类型为冗余文件夹时,所述冗余文件夹是具备子文件夹的文件夹,所述方法还包括:继续对所述第二节点的兄弟节点的遍历。
12、当文件夹的类型不是叶子文件夹时(是冗余文件夹),可以依次遍历第一节点的子节点(冗余文件夹下的文件或文件夹),并在遍历到对应文件的子节点时,跳过对该子节点对应的文件的数据信息的比对并继续遍历下一个子节点。
13、也就是说,本技术的技术方案实施时,既可以不区分文件夹的类型,对数据信息未变化的文件夹下的节点一一遍历,并且根据节点对应文件还是文件夹确定是否跳过对文件或文件夹的数据信息的比对(对于文件无需比对数据信息,对于文件夹需要比对数据信息)。也可以区分文件夹的类型,对数据信息未变化的叶子文件夹下的文件,扫描到第一个文件后,跳过对当前文件的数据信息的比对并跳过该文件夹下其他文件的遍历;对数据信息未变化的冗余文件夹下的文件,需要依次遍历各个节点,扫描到文件时,跳过对文件的数据信息的比对,仅对扫描到的文件夹进行数据信息的比对。
14、本技术实施例中,文件夹的数据信息包括文件夹的修改时间,可选的,文件夹的数据信息还包括文件夹的大小。文件的修改时间变化后,其父文件夹的修改时间也会发生变化,而该父文件夹的父文件夹的修改时间不会发生变化。而文件大小发生变化时,其父文件夹的大小和父文件夹的父文件夹的大小是否发生变化有可能存在三种情况(不同操作系统的配置可能不一样):情况1,父文件夹的大小发生变化,而父文件夹的父文件夹的大小不发生变化;情况2,父文件夹的大小发生变化,父文件夹的父文件夹的大小也发生变化(父文件夹的上n级文件夹的大小均发生变化);情况3:父文件夹的大小不发生变化,父文件夹的父文件夹的大小也不发生变化。
15、当文件夹的数据信息包括文件夹的大小和文件夹的修改时间时,也就是说,只有文件夹的大小和修改时间都未发生变化时,判断文件夹的数据信息未发生变化。当情况1时,由于文件大小的变化仅影响其父文件夹的大小,不影响其父文件夹的上一级或多级文件夹的大小,与文件的修改时间发生变化影响的效果相同,则增加对文件夹的大小的判断与单判断文件夹的修改时间的结果基本一致。只有当例如用户在两次扫描间隔时对文件进行了修改且两次扫描间隔小于文件夹的修改时间的精度时,例如小于1s时,文件的修改时间由于精度的问题不会显示出变化,但是文件大小可能由于用户对文件的修改产生了变化,使得该文件的父文件夹的数据信息被判断为发生变化,这样增加文件夹的大小这一指标能够避免遗漏对该文件夹下的文件进行扫描,进而提高本技术实施例适用的场景。当情况2时,由于文件大小的变化不仅影响其父文件夹的大小且会影响其父节点的父节点的文件夹的大小,则当文件大小发生变化时,该文件所在的直系分支节点对应的父文件夹的数据信息均发生变化。以图3为例,节点17对应的文件大小发生变化时,节点7、节点4和节点1对应的文件夹的大小都发生变化,文件扫描时需要比对节点8和节点9对应的文件,这种情况会导致扫描开销仍然较高。而如果节点10对应的文件大小发生变化,节点5、节点2和节点1对应的文件夹的大小会同步变化,节点6对应的文件夹的大小不会发送变化,通过本技术实施例的技术方案仍然可以减小这种情况下的扫描开销。因此,判断文件夹的数据信息是否发生变化时可以考虑文件夹的大小;但是为了尽可能减小扫描开销,判断文件夹的数据信息是否发生变化时可以不考虑文件夹的大小。当情况3时,由于文件大小的变化不影响其父文件夹的大小,则文件夹的大小永远不会发生变化,为初始建立该文件夹时的大小,则对文件夹的大小是否发生变化的判断为冗余判断,父文件夹的修改时间发生变化时(该父文件夹的大小不变),文件夹的数据信息发生变化;父文件夹的修改时间未发生变化时(该文件夹的大小不变,文件夹的数据信息未发生变化)。
16、另外,在判断文件夹的数据信息是否发生变化时,由于需要从文件夹的数据信息是否发生变化间接判断文件夹下的文件是否被修改,为了尽可能减小文件扫描开销,除了文件夹的修改时间,只能使用满足一定调节的指标作为判断文件夹的数据信息是否发生变化的标准,例如前文介绍的满足条件1和条件3的指标(也可以考虑满足条件2的指标,也有一定的减小文件扫描开销的效果)。但是在更新文件或文件夹的数据信息到数据库或者判断文件的数据信息是否发生变化时,目的都是为了更新数据信息到数据库,可以仅更新判断时使用的指标,也可以直接将文件或文件夹的所有信息到数据库中,也就是直接根据文件或文件夹从文件系统中读取的各项信息,并将各项信息更新到数据库中。
17、结合第一方面,在第一方面的一些实现方式中,在所述遍历到所述第二节点之前,所述方法还包括:比对所述第一节点对应的文件夹在文件系统中的数据信息相对于所述第一节点对应的文件夹在数据库中的数据信息是否发生变化;当所述第一节点对应的文件夹在文件系统中的数据信息相对于所述第一节点对应的文件夹在数据库中的数据信息未发生变化时,将所述第一节点的标识存储在第一列表中;其中,所述确定第一节点对应的文件夹的数据信息是否发生变化,包括:当所述第一节点的标识在所述第一列表中,确定所述第一节点对应的文件夹的数据信息未发生变化;当所述第一节点的标识不在所述第一列表中,确定所述第一节点对应的文件夹的数据信息发生变化。
18、在该实施例中,由于遍历待扫描的各个节点的数据具有一定的顺序,可以在遍历到文件夹节点时,比对数据信息并判断数据信息是否发生变化,从而将数据信息未变化的文件夹或对应节点的标识存储在相应的列表中,以便于后续扫描到该文件夹下的文件时,根据文件所属文件夹是否在相应的列表中,确定对该文件和其兄弟节点对应的文件的扫描策略。
19、具体的,当不区分文件夹的类型时,可以将数据信息未变化的文件夹或对应节点的标识存储在第一列表中。
20、当区分文件夹的类型时,可以将数据信息未变化的叶子文件夹或对应节点的标识存储在第二列表中,并将数据信息未变化的冗余文件夹或对应节点的标识存储在第三列表中。
21、结合第一方面,在第一方面的一些实现方式中,若所述第二节点对应文件夹,所述方法还包括:比对所述第二节点对应的文件夹在文件系统中的数据信息相对于所述第二节点对应的文件夹在数据库中的数据信息是否发生变化;当所述第二节点对应的文件夹在文件系统中的数据信息相对于所述第二节点对应的文件夹在数据库中的数据信息发生变化时,更新所述第二节点对应的文件夹在文件系统中的数据信息至数据库。
22、在该实施例中,当遍历到文件夹节点时,均需要比对文件夹在文件系统中的数据信息相对于该文件夹在数据库中的数据信息是否发生变化,从而确定文件夹的数据信息是否发生变化。如果发生变化,将该数据信息更新到数据库,以便于下次进行文件扫描时不因为未更新导致下次扫描进程的加长。如果未发生变化,可以将该文件夹或对应节点的标识存储在相应的列表中,供后续扫描到该文件夹下的子文件或子文件夹时确定相应的扫描策略。
23、结合第一方面,在第一方面的一些实现方式中,所述方法还包括:当遍历到第三节点时,所述第三节点是所述第二节点的子节点,所述第三节点对应文件,若所述第二节点对应的文件夹的数据信息未发生变化,跳过对所述第三节点对应的文件在文件系统中的数据信息相对于所述第三节点对应的文件在数据库中的数据信息是否发生变化的比对;若所述第二节点对应的文件夹的数据信息发生变化,比对所述第三节点对应的文件在文件系统中的数据信息相对于所述第三节点对应的文件在数据库中的数据信息是否发生变化。
24、当扫描到文件夹下的文件时,可以根据文件夹的数据信息是否发生变化变化,确定该文件的扫描策略。
25、结合第一方面,在第一方面的一些实现方式中,所述文件夹的数据信息包括文件夹的大小。
26、可选的,文件夹的数据信息还可以包括文件夹的存储路径、文件夹包含的文件数和包含的文件夹数中的至少一项。并且,为了尽可能减小文件扫描的开销,当文件的数据信息的某一指标变化,该文件的父文件夹的数据信息的相应指标变化,且该父文件夹的父文件夹(以及父文件夹的上n级父文件夹)的相应指标不能发生变化;或者,当文件的数据信息的某一指标变化,该文件夹的父文件夹的数据信息以及该父文件夹的父文件夹(以及父文件夹的上n级父文件夹)的相应指标不能发生变化。也就是只有当文件的相应指标发生变化时,对父文件夹和父文件夹的父文件夹的相应指标的影响与前文介绍的文件大小的影响中情况1和情况3类似时,判断文件夹的数据信息是否发生变化时才可以考虑相应指标,具体可以参考前文介绍,此处不再赘述。
27、结合第一方面,在第一方面的一些实现方式中,所述第一信息包括所述第一目录。
28、待扫描的目录可以是携带在第一信息中,该第一目录可以是应用程序或进程根据用户修改的文件的存储路径确定的。
29、结合第一方面,在第一方面的一些实现方式中,所述电子设备的操作系统为android系统。
30、当电子设备的操作系统为安卓系统时,可以由电子设备的媒体库执行上述文件扫描方法。可选的,电子设备的操作系统也可以为linux操作系统、windows操作系统等。
31、第二方面,提供了一种文件扫描装置,包括:获取单元,用于获取第一信息,所述第一信息用于确定待扫描的第一目录,第一节点和第二节点是所述第一目录下的节点,所述第一节点是所述第二节点的父节点,所述第一节点对应文件夹;处理单元,用于:当遍历到所述第二节点时,若所述第二节点对应文件,确定所述第一节点对应的文件夹的数据信息是否发生变化,所述文件夹的数据信息包括文件夹的修改时间;当所述第一节点对应的文件夹的数据信息未发生变化时,跳过对所述第二节点对应的文件在文件系统中的数据信息相对于所述第二节点对应的文件在数据库中的数据信息的比对,文件的数据信息包括文件的修改时间、文件类型、文件存储路径、文件大小中的至少一项。
32、结合第二方面,在第二方面的一些实现方式中,当所述第一节点对应的文件夹的类型为冗余文件夹时,所述冗余文件夹是具备子文件夹的文件夹,所述处理单元,还用于:继续对所述第二节点的兄弟节点的遍历。
33、结合第二方面,在第二方面的一些实现方式中,所述第一节点对应的文件夹的类型为冗余文件夹。
34、结合第二方面,在第二方面的一些实现方式中,所述处理单元,还用于:比对所述第一节点对应的文件夹在文件系统中的数据信息相对于所述第一节点对应的文件夹在数据库中的数据信息是否变化;当所述第一节点对应的文件夹在文件系统中的数据信息相对于所述第一节点对应的文件夹在数据库中的数据信息未发生变化时,将所述第一节点的标识存储在第一列表中;其中,所述处理单元,具体用于:当所述第一节点的标识在所述第一列表中,确定所述第一节点对应的文件夹的数据信息未发生变化;当所述第一节点的标识不在所述第一列表中,确定所述第一节点对应的文件夹的数据信息发生变化。
35、结合第二方面,在第二方面的一些实现方式中,若所述第二节点对应文件夹时,所述处理单元,还用于:比对所述第二节点对应的文件夹在文件系统中的数据信息相对于所述第二节点对应的文件夹在数据库中的数据信息是否变化;当所述第二节点对应的文件夹在文件系统中的数据信息相对于所述第二节点对应的文件夹在数据库中的数据信息发生变化时,更新所述第二节点对应的文件夹在文件系统中的数据信息至数据库。
36、结合第二方面,在第二方面的一些实现方式中,所述处理单元,还用于:当遍历到第三节点时,所述第三节点是所述第二节点的子节点,所述第三节点对应文件,若所述第二节点对应的文件夹的数据信息未发生变化,跳过对所述第三节点对应的文件在文件系统中的数据信息相对于所述第三节点对应的文件在数据库中的数据信息是否发生变化的比对;若所述第二节点对应的文件夹的数据信息发生变化,比对所述第三节点对应的文件在文件系统中的数据信息相对于所述第三节点对应的文件在数据库中的数据信息是否发生变化。
37、结合第二方面,在第二方面的一些实现方式中,所述文件夹的数据信息包括文件夹的大小。
38、结合第二方面,在第二方面的一些实现方式中,所述第一信息包括所述第一目录。
39、第三方面,提供了一种电子设备,包括第二方面或第二方面任一种实现方式的文件扫描装置。
40、第四方面,提供了一种计算机存储介质,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面或第一方面任一种实现方式至第二方面或第二方面任一种实现方式所述的方法。
41、第五方面,提供了一种电子设备,包括:存储器,用于存储计算机指令;处理器,用于执行所述存储器中存储的计算机指令,以使所述电子设备执行如第一方面或第一方面任一种实现方式所述的方法。
42、第六方面,提供了一种芯片系统,其特征在于,包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得所述至少一个处理器执行如第一方面或第一方面任一种实现方式所述的方法。
43、第七方面,提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任一种可能实现方式所述的方法。
44、可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,
45、所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述第一方面以及第一方面的任一种可能实现方式所述的方法。
46、上述芯片具体可以是现场可编程门阵列或者专用集成电路。
1.一种文件扫描方法,应用于电子设备,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,当所述第一节点对应的文件夹的类型为叶子文件夹时,所述叶子文件夹是不具备子文件夹的文件夹,所述方法还包括:
3.如权利要求1所述的方法,其特征在于,当所述第一节点对应的文件夹的类型为冗余文件夹时,所述冗余文件夹是具备子文件夹的文件夹,所述方法还包括:
4.如权利要求1至3中任一项所述的方法,其特征在于,在所述遍历到所述第二节点之前,所述方法还包括:
5.如权利要求1至4中任一项所述的方法,其特征在于,
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
7.如权利要求1至6中任一项所述的方法,其特征在于,所述文件夹的数据信息包括文件夹的大小。
8.如权利要求1至7中任一项所述的方法,其特征在于,所述第一信息包括所述第一目录。
9.如权利要求1至8中任一项所述的方法,其特征在于,所述电子设备的操作系统为android系统。
10.一种文件扫描装置,其特征在于,包括:
11.如权利要求10所述的装置,其特征在于,当所述第一节点对应的文件夹的类型为叶子文件夹时,所述叶子文件夹是不具备子文件夹的文件夹,所述处理单元,还用于:
12.如权利要求10所述的装置,其特征在于,当所述第一节点对应的文件夹的类型为冗余文件夹时,所述冗余文件夹是具备子文件夹的文件夹,所述处理单元,还用于:
13.如权利要求10至12中任一项所述的装置,其特征在于,所述处理单元,还用于:
14.如权利要求10至13中任一项所述的装置,其特征在于,若所述第二节点对应文件夹时,所述处理单元,还用于:
15.如权利要求14所述的装置,其特征在于,所述处理单元,还用于:
16.如权利要求10至15中任一项所述的装置,其特征在于,所述文件夹的数据信息包括文件夹的大小。
17.如权利要求10至16中任一项所述的装置,其特征在于,所述第一信息包括所述第一目录。
18.一种电子设备,包括如权利要求10至17中任一项所述的文件扫描装置。
19.一种计算机存储介质,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至9中任一项所述的方法。
20.一种电子设备,其特征在于,包括:
21.一种芯片系统,其特征在于,包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得所述至少一个处理器执行如权利要求1至9中任一项所述的方法。