掌桥专利:专业的专利平台
掌桥专利
首页

识别重复文件的方法及电子设备

文献发布时间:2024-01-17 01:15:20


识别重复文件的方法及电子设备

技术领域

本申请涉及终端技术领域,尤其涉及一种识别重复文件的方法及电子设备。

背景技术

目前,为了满足人们越来越大的数据存储需求,终端设备的厂商为用户提供的终端设备的存储空间也越来越大。随着终端设备的存储空间的不断增大,以及终端上存储的数据的不断增多,终端设备中的重复文件也越来越多,这样不仅会降低存储空间的使用效率,而且会降低终端设备的数据管理效率。基于此,可以通过对终端设备中的重复文件进行识别和显示,从而为用户提供一种提高终端设备的数据管理效率以及存储空间的使用效率的途径。

常用的重复文件识别方法是通过第三方应用程序对存储空间中的文件进行扫描,并计算扫描出的各个文件的散列值,通过将扫描出的各个文件的散列值进行对比,基于文件的散列值是否相同来识别是否为重复文件。然而,由于文件的散列值的计算量通常较大,因此,对扫描出的每个文件的散列值均进行计算会耗费大量的时间,不仅会降低终端设备的重复文件识别速度,而且会大大增加终端设备的功耗。

发明内容

本申请实施例提供一种识别重复文件的方法及电子设备,能够减少终端设备识别重复文件时的计算量,提高终端设备的重复文件识别速度,降低终端设备的功耗。

第一方面,本申请实施例提供一种识别重复文件的方法,包括:

对存储空间中的文件进行扫描;

将扫描到的文件中文件大小相等的文件划分至同一组,得到一个或多个第一文件组;

剔除包括单个文件的第一文件组,并计算剩余的第一文件组中各个文件的首尾页散列值,将同一个第一文件组中首尾页散列值相等的文件划分至同一组,得到一个或多个第二文件组;

剔除包括单个文件的第二文件组,并计算剩余的第二文件组中每个文件的文件散列值;

基于剩余的第二文件组中各个文件的文件散列值,识别剩余的第二文件组中的重复文件。

可选的,在终端设备仅支持内置的闪存或固态硬盘,而不支持外部拓展存储卡的情况下,存储空间可以仅包括终端设备内置的闪存或固态硬盘提供的存储空间。可选的,在终端设备既支持内置的闪存或固态硬盘,又支持外部拓展存储卡的情况下,存储空间可以包括终端设备内置的闪存或固态硬盘提供的存储空间以及外部拓展存储卡提供的存储空间。

存储空间中的文件进行扫描具体可以指,对存储空间中的文件进行遍历和检查,以获取存储空间中的每个文件的文件属性。

文件属性例如可以包括文件名称和文件类型。

第一文件组中可以仅包括一个文件,也可以包括多个文件。同一个第一文件组中的所有文件的文件大小均相等。不同的第一文件组中的文件的文件大小不相等。

包括单个文件的第一文件组指文件数量为1的第一文件组。

终端设备剔除掉包括单个文件的第一文件组之后,剩余的各个第一文件组均为包括多个文件的第一文件组,即剩余的各个第一文件组的文件数量均大于1。

文件的首尾页散列值可以包括文件的首页的散列值和尾页的散列值。

其中,文件的首页指文件的第一个内存页,文件的尾页指文件的最后一个内存页。

文件的首尾页散列值相等指文件的第一个内存页的散列值和最后一个内存页的散列值均相等。

第二文件组中可以仅包括一个文件,也可以包括多个文件。同一个第二文件组中的所有文件的首尾页散列值均相等,不同的第二文件组中的文件的首尾页散列值不相等。

包括单个文件的第二文件组指文件数量为1的第二文件组。

终端设备剔除掉包括单个文件的第二文件组之后,剩余的各个第二文件组均为包括多个文件的第二文件组,即剩余的各个第二文件组的文件数量均大于1。

文件的文件散列值指针对文件的所有内存页的散列值。文件散列值与第一个内存页的散列值或最后一个内存页的散列值的区别在于,第一个内存页的散列值或最后一个内存页的散列值为文件的单个内存页的散列值,而文件散列值为文件中的全部内容对应的散列值。

可选的,可以仅创建一个线程来计算剩余的所有第二文件组中的每个文件的文件散列值。

可选的,可以创建多个线程来计算剩余的各个第二文件组中的每个文件的文件散列值。

根据本申请实施例提供的识别重复文件的方法,通过先基于扫描到的各个文件的文件大小和首尾页散列值,分别对扫描到的所有文件进行一次分组和二次分组,并剔除掉包括单个文件的文件组,从而可以过滤掉一些非重复文件,即可以粗略地筛选出可能是重复文件的文件;再创建一个或多个线程来计算剩余的文件组中各个文件的文件散列值,并基于剩余的文件组中各个文件的文件散列值,识别剩余的文件组中的重复文件。由于终端设备先过滤掉了一些非重复文件,因此可以省去终端设备计算非重复文件的文件散列值的计算量,降低终端设备识别重复文件时的整体计算量,从而可以提高终端设备的重复文件识别速度。此外,通过多个线程计算剩余的文件组中各个文件的文件散列值,能够提高终端设备的文件散列值计算速度,从而进一步提高终端设备的重复文件识别速度。重复文件识别速度的提升可以降低终端设备识别重复文件时的功耗,节省终端设备的内存资源。

在第一方面的一种可选的实现方式中,所述计算剩余的第二文件组中每个文件的文件散列值,包括:

创建多个线程;

将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,使每个线程被分配到的文件的总文件大小相等或近似相等。

线程被分配到的文件的总文件大小指线程被分配到的所有文件的文件大小之和。

根据本申请实施例提供的识别重复文件的方法,通过多个线程计算剩余的文件组中各个文件的文件散列值,能够提高重复文件识别过程中剩余的各个文件的文件散列值计算速度,从而进一步提高终端设备的重复文件识别速度。

在第一方面的一种可选的实现方式中,所述创建多个线程,包括:

在剩余的所有第二文件组包括的文件的总文件大小小于或等于第一文件大小阈值的情况下,创建预设数量个线程,所述预设数量为常数,且所述预设数量大于1。

其中,第一文件大小阈值可以根据预设数量以及每个线程的最大计算量确定。具体地,第一文件大小阈值可以为预设数量与每个线程的最大计算量的乘积。

在第一方面的一种可选的实现方式中,所述创建多个线程,包括:

在剩余的所有第二文件组包括的文件的总文件大小大于所述第一文件大小阈值的情况下,创建R个线程,R=S+up_round((D1-YZ)/D2);

其中,S为线程的预设数量,D1为剩余的所有第二文件组包括的文件的总文件大小,YZ为所述第一文件大小阈值,D2为每个线程的最大计算量,up_round()为向上取整函数。

在(D1-YZ)/D2为非整数的情况下,up_round((D1-YZ)/D2)为D1-YZ除以D2后得到的结果的整数部分加1;在(D1-YZ)/D2为整数的情况下,up_round((D1-YZ)/D2)为D1-YZ除以D2后得到的结果。

根据本申请实施例提供的识别重复文件的方法,通过基于待识别的重复文件的总文件大小对用于计算文件散列值的线程的数量进行动态调整,使得在重复文件的总文件大小较大的情况下,依旧能够保证具有较快的重复文件识别速度,从而扩大了该方法的适用范围。

在第一方面的一种可选的实现方式中,所述将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,包括:

将剩余的所有第二文件组包括的文件的总文件大小与所述线程的总数量的第一比值,确定为每个线程的平均计算量,所述平均计算量小于或等于所述线程的最大计算量;

基于所述平均计算量,以单个第二文件组为最小分配单位,按照各个所述第二文件组的总文件大小从小到大的顺序,依次将剩余的各个第二文件组分配给各个线程,使每个线程被分配到的文件的总文件大小等于或近似等于所述平均计算量。

其中,剩余的所有第二文件组包括的文件的总文件大小指,剩余的所有第二文件组包括的所有文件的文件大小之和。

线程的总数量指终端设备为计算剩余的所有第二文件组包括的文件的文件散列值而创建的线程的总数量。

终端设备以单个第二文件组为最小分配单位为各个线程分配文件的原则是,保证每个线程被分配到的文件的总文件大小等于或近似等于每个线程的平均计算量。

其中,线程被分配到的文件的总文件大小指线程被分配到的所有文件的文件大小之和。

终端设备在为各个线程分配文件时,可以先分配小文件的文件组,再分配大文件的文件组。其中,小文件的文件组指文件组中单个文件的文件大小相对较小的文件组,大文件的文件组指文件组中单个文件的文件大小相对较大的文件组。

具体地,终端设备可以先计算每个第二文件组的总文件大小,再基于每个线程的平均计算量以及各个第二文件组的总文件大小,按照各个第二文件组的总文件大小从小到大的顺序,依次将剩余的各个第二文件组分配给各个线程。其中,第二文件组的总文件大小指第二文件组包括的所有文件的文件大小之和。

以整个第二文件组作为最小分配单位为各个线程分配文件,虽然不能保证每个线程被分配到的文件的总文件大小刚好等于线程的平均计算量,但由于线程的平均计算量通常是GB量级的,而线程被分配到的文件的总文件大小该平均计算量之间的误差通常是KB量的,因此该误差通常不会对所有线程的整体文件识别速度造成太大影响。

本实现方式中,由于同一个第二文件组中的文件为重复文件的可能性较大,因此,通过将同一个第二文件组分配给同一个线程进行处理,可以提高重复文件的识别准确率。

在第一方面的一种可选的实现方式中,所述将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,包括:

计算剩余的所有第二文件组包括的文件的总数量与所述线程的总数量的第二比值;

在所述第二比值为整数的情况下,为每个所述线程分配所述第二比值个文件;

在所述第二比值为非整数的情况下,先为每个所述线程分配N个文件,再为所述多个线程中的任意M个线程各分配一个文件;其中,N=floor(X1/Y1),M=X1 mod Y1,X1为剩余的所有第二文件组包括的文件的总数量,Y1为所述线程的总数量,floor为向下取整函数,mod为取余函数;

基于每个线程被分配到的文件的总文件大小,对需要进行文件分配调整的目标线程进行文件分配调整,使每个线程最终被分配到的文件的总文件大小相等或近似相等。

floor(X1/Y1)为X1除以Y1后得到的结果的整数部分。

X1 mod Y1为X1除以Y1后得到的结果的余数部分。

该实现方式中,不同线程被分配到的文件的数量最多相差1。

需要进行文件分配调整的目标线程指,被分配到的文件的总文件大小偏离线程总文件大小的平均值较多的线程。其中,线程总文件大小的平均值可以为剩余的第二文件组包括的所有文件的总文件大小与线程的总数量的比值,换言之,线程总文件大小的平均值也即线程的平均计算量。

根据本申请实施例提供的识别重复文件的方法,通过将剩余的第二文件组中的所有文件平均分配给各个线程,使各个线程计算文件散列值时所消耗的时间近似相等,从而能够使终端设备在最快的时间内完成文件散列值的计算过程,提高终端设备的重复文件识别速度。

在第一方面的一种可选的实现方式中,所述将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,包括:

将所有线程被分配到的文件的总文件大小之和与所述线程的总数量的比值,确定为线程总文件大小的平均值;

计算每个线程被分配到的文件的总文件大小与所述平均值的差值;

将所述差值大于第一差值阈值的线程确定为目标线程;

对所述目标线程进行文件分配调整,使各个目标线程最终被分配到的文件的总文件大小与所述平均值的差值均小于或等于所述第一差值阈值。

所有线程被分配到的文件的总文件大小之和也即剩余的第二文件组包括的所有文件的总文件大小。

线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值大于或等于0。具体地,若某个线程被分配到的文件的总文件大小小于线程总文件大小的平均值,则该线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值指,该线程被分配到的文件的总文件大小与线程总文件大小的平均值之差的绝对值;若某个线程被分配到的文件的总文件大小大于线程总文件大小的平均值,则该线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值指,该线程被分配到的文件的总文件大小与线程总文件大小的平均值之差。其中,线程被分配到的文件的总文件大小与线程总文件大小的平均值之差指,线程被分配到的文件的总文件大小减去线程总文件大小的平均值。

第一差值阈值可以根据各个线程的数据处理速率以及预设时间微差量来确定。例如,第一差值阈值可以为各个线程的数据处理速率与预设时间微差量的乘积。

线程的数据处理速率例如可以为线程的文件散列值计算速率。预设时间微差量例如可以为,不同线程计算完文件散列值所消耗的时间之间被允许的最大微差量。

目标线程可以包括被分配到的文件的总文件大小大于线程总文件大小的平均值的第一类线程,以及被分配到的文件的总文件大小小于线程总文件大小的平均值的第二类线程。

可选的,如果仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程,便能使各个目标线程最终被分配到的文件的总文件大小与线程总文件大小的平均值的差值均小于或等于第一差值阈值,则终端设备可以仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程。

可选的,如果仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程,无法使各个目标线程最终被分配到的文件的总文件大小与线程总文件大小的平均值的差值均小于或等于第一差值阈值,则终端设备除了从第一类线程中筛选出一个或多个文件重新分配给第二类线程之外,还可以从第二类线程中筛选出一个或多个文件重新分配给第一类线程。

在第一方面的一种可选的实现方式中,所述基于剩余的第二文件组中各个文件的文件散列值,识别剩余的第二文件组中的重复文件,包括:

将剩余的第二文件组中文件散列值相等的文件识别为重复文件。

终端设备在识别出存储空间中的全部重复文件后,可以显示识别出的全部重复文件以及针对各个重复文件的清理控件。如此,用户可以根据实际需求选择对重复文件进行清理。重复文件被清理后可以提高终端设备的存储空间的使用效率和数据管理效率。

可选的,在重复文件识别过程中,终端设备可以实时显示识别出的重复文件的数量。如此可以使用户实时获知终端设备的重复文件识别进度和存储空间中包括的重复文件的数量。

第二方面,本申请实施例提供一种电子设备,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机可执行程序,所述一个或多个计算机可执行程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面的任一实现方式所述的识别重复文件的方法中的各步骤。

第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序在被计算机调用时使所述计算机执行如上述第一方面的任一实现方式所述的识别重复文件的方法中的各步骤。

第四方面,本申请实施例提供一种计算机可执行程序产品,当计算机可执行程序产品在电子设备上运行时,使得电子设备执行上述第一方面的任一实现方式所述的识别重复文件的方法中的各步骤。

第五方面,本申请实施例提供一种芯片系统,包括处理器,处理器与存储器耦合,处理器执行存储器中存储的计算机可执行程序,以实现如上述第一方面的任一实现方式所述的识别重复文件的方法中的各步骤。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。

可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

图1为本申请实施例提供的一种电子设备的结构示意图;

图2为本申请实施例提供的一种识别重复文件的方法的示意性流程图;

图3为本申请实施例提供的一种对扫描到的文件进行筛选的过程的示意图;

图4为本申请实施例提供的一种文件读取方式的示意图;

图5为本申请实施例提供的一种识别重复文件的方法中S204的具体实现流程图;

图6为本申请实施例提供的一种识别重复文件的方法中S2042的具体实现流程图;

图7为本申请另一实施例提供的一种识别重复文件的方法中S2042的具体实现流程图;

图8为本申请实施例的一种电子设备的软件架构示意图;

图9为本申请实施例提供的一种识别重复文件的方法实现过程中涉及到的用户界面示意图;

图10为本申请实施例提供的一种终端设备实现识别重复文件的方法的时终端设备中各个软件模块之间的交互时序示意图。

具体实施方式

需要说明的是,本申请实施例的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联物的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,除非另有说明,“多个”是指两个或多于两个,“至少一个”、“一个或多个”是指一个、两个或两个以上。

以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含地包括一个或者更多个该特征。

在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

终端设备(例如手机或电脑等)的存储空间指终端设备提供的用于存储操作系统、应用程序、媒体文件、文档或者其他用户数据的可用空间。在终端设备不支持外部拓展存储卡的情况下,终端设备的存储空间可以仅包括终端设备内置的闪存或固态硬盘的存储空间,该情况下,终端设备的存储空间的大小可以指终端设备内置的闪存或固态硬盘的容量。在终端设备支持外部拓展存储卡的情况下,终端设备的存储空间除了包括内置的闪存或固态硬盘的存储空间之外,还可以包括外部扩展存储卡的存储空间,该情况下,终端设备的存储空间的大小可以指终端设备内置的闪存或固态硬盘的容量与外部拓展存储卡的容量之和。

目前,为了满足人们越来越大的数据存储需求,终端设备的厂商为用户提供的终端设备的存储空间也越来越大。随着终端设备的存储空间的不断增大以及终端上存储的数据的不断增多,终端设备中的重复文件也越来越多。重复文件通常会在以下场景中产生:

场景1,文件的转发或分享会产生重复文件。具体地,当用户在终端设备上转发或分享文件给其他人时,终端设备通常会创建一个文件副本,并将该文件副本发送给目标接收者,这样,原始文件和文件副本都会被存储在终端设备中,从而导致重复文件的产生。

场景2,应用程序的运行过程中会产生重复文件。具体地,终端设备中的某些应用程序在运行时会产生临时文件、日志文件以及缓存文件等。若这些应用程序没有适当的文件管理机制,那么上述临时文件、日志文件以及缓存文件等可能会在应用程序运行过程中的不同时间节点被重复生成,从而导致重复文件的产生。

场景3,操作系统的运行过程中会产生重复文件。具体地,在操作系统的运行过程中,当多个应用程序需要共享同一份文件时,操作系统会在该多个应用程序各自对应的存储路径下分别创建一份共享文件的副本,从而导致重复文件的产生。

终端设备中重复文件的增多不仅会降低终端设备的存储空间的使用效率,而且会降低终端设备的数据管理效率。基于此,为了提高终端设备的数据管理效率以及终端设备的存储空间的使用效率,可以提供一种识别重复文件的方法,通过将终端设备中的重复文件识别出来并展示给用户,使用户可以基于实际需求选择是否清理重复文件,从而为用户提供一种提高终端设备的数据管理效率以及存储空间的使用效率的途径。

通常,存储空间中的重复文件的识别速度会受到但不限于以下几个因素的影响:

1)存储空间的容量和使用率。具体地,存储空间的容量越大,使用率越大,代表存储空间中存储的文件越多,这样,存储空间中重复文件的总数量可能会越多,识别重复文件时的计算量可能会越大,最终识别出的重复文件的数量也会比较多。

2)单个文件的文件大小。具体地,单个文件的文件大小越大,文件散列值的计算时长就会越长,重复文件的识别速度就会越慢。

常用的重复文件识别方法是通过第三方应用程序对终端设备的存储空间中的文件进行扫描,并计算扫描出的各个文件的散列值,通过将扫描出的各个文件的散列值进行对比,基于文件的散列值是否相同来识别是否为重复文件。例如,若两个文件的散列值相等,则表示这两个文件为完全相同的文件;若两个文件的散列值不同,则表示这两个文件为不同的文件。

然而,在计算文件的散列值时,通常需要逐个读取文件的每一个内容分块,并分别计算每一个内容分块对应的散列值,最终得到文件的散列值。可见,文件的散列值的计算量较大。因此,对扫描出的每个文件的散列值均进行计算会耗费大量的时间,不仅会降低终端设备的重复文件识别速度,而且会增加终端设备的功耗,同时还会占用终端设备较多的内存资源。

此外,第三方应用程序的文件访问权限通常会受到一定限制,即第三方应用程序通常仅能扫描或读取到用户文件(例如data/user目录下的文件),而无法扫描到存储空间中的所有文件,例如无法扫描到存储空间中的库文件,因此该常用的重复文件识别方法的文件识别范围较小,从而导致用户无法对终端设备中的所有重复文件均进行清理,即该常用的重复文件识别方法会导致对存储空间中的重复文件清理不彻底。

有鉴于此,本申请实施例提供一种识别重复文件的方法及电子设备,通过先基于扫描到的各个文件的文件大小和首尾页散列值,分别对扫描到的所有文件进行一次分组和二次分组,并剔除掉包括单个文件的文件组,从而可以过滤掉一些非重复文件,即可以粗略地筛选出可能是重复文件的文件;再创建一个或多个线程来计算剩余的文件组中各个文件的文件散列值,并基于剩余的文件组中各个文件的文件散列值,识别剩余的文件组中的重复文件。由于终端设备先过滤掉了一些非重复文件,因此可以省去终端设备计算非重复文件的文件散列值的计算量,降低终端设备识别重复文件时的整体计算量,从而可以提高终端设备的重复文件识别速度。此外,通过多个线程计算剩余的文件组中各个文件的文件散列值,能够提高终端设备的文件散列值计算速度,从而进一步提高终端设备的重复文件识别速度。重复文件识别速度的提升可以降低终端设备识别重复文件时的功耗,节省终端设备的内存资源。

本申请实施例提供的识别重复文件的方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本及个人数字助理(personal digital assistant,PDA)等电子设备上,本申请实施例对电子设备的具体类型不做任何限制。

以下以电子设备为手机为例,对本申请实施例提供的识别重复文件的方法所适用的电子设备的结构进行说明。如图1所示,为本申请实施例提供的一种电子设备的结构示意图。

电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,以及骨传导传感器180M等。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,SIM接口,和/或USB接口等。

I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。

I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。

PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。

UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。

MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。

GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。

可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC ,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。

电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。

电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。

ISP 用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。

摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。

电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。

扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。

受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。

麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。

耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。

气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。

磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。

加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。

距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。

接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。

环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。

指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。

触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。

骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。

按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。

马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。

可以理解的是,图1示意的结构并不构成对电子设备100的具体限定。在本申请的另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

请参阅图2,为本申请实施例提供的一种识别重复文件的方法的示意性流程图。如图2所示,该识别重复文件的方法可以包括S201~S205,详述如下:

S201,对存储空间中的文件进行扫描。

可选的,在终端设备仅支持内置的闪存或固态硬盘,而不支持外部拓展存储卡的情况下,存储空间可以仅包括终端设备内置的闪存或固态硬盘提供的存储空间。可选的,在终端设备既支持内置的闪存或固态硬盘,又支持外部拓展存储卡的情况下,存储空间可以包括终端设备内置的闪存或固态硬盘提供的存储空间以及外部拓展存储卡提供的存储空间。

示例性的,终端设备内置的闪存或固态硬盘或者终端设备的外部拓展存储卡均可以是以磁盘作为存储介质的存储器。

本申请实施例中,对存储空间中的文件进行扫描具体可以指,对存储空间中的文件进行遍历和检查,以获取存储空间中的每个文件的文件属性。

文件属性例如可以包括文件名称、文件类型、文件大小、创建时间以及修改时间等。

示例性的,文件类型可以包括但不限于文本文件、图像文件、音频文件、视频文件、库文件或安装文件等。更具体地,图像文件例如可以包括联合图像专家组(jointphotographic experts group,JPEG)、便携式网络图形(portable network graphics,PNG)或图形交换格式(graphics interchange format,GIF)等不同类型的图像文件。音频文件例如可以包括动态图像专家组音频第三层(moving picture experts group audiolayer III,MP3)、波形音频文件格式(waveform audio file format,WAV)或自由无损音频编码器(free lossless audio code,FLAC)等不同类型的音频文件。视频文件例如可以包括动态图像专家组4(moving picture experts group-4,MP4)、音频视频交错(audiovideo interleave,AVI)或Windows媒体视频(Windows media video,WMV)等不同类型的视频文件。

在具体实现时,可以通过文件的后缀名对不同类型的文件进行区分。其中,文件的后缀名可以由字符“.”和文件类型标识符组成,例如,“.txt”通常表示文本文件,“.jpg”通常表示JPEG类型的图像文件。文件的后缀名通常位于文件名称的最后部分。

在一个可选的实现方式中,为了提高文件的扫描速度,终端设备在对存储空间中的文件进行扫描时,可以仅获取存储空间中的每个文件的文件大小和文件类型。

在另一个可选的实现方式中,为了进一步提高文件的扫描速度,终端设备在对存储空间中的文件进行扫描时,可以仅获取存储空间中的每个文件的文件大小。

S202,将扫描到的文件中文件大小相等的文件划分至同一组,得到一个或多个第一文件组。

本实施例中,第一文件组中可以仅包括一个文件,也可以包括多个文件。同一个第一文件组中的所有文件的文件大小均相等。不同的第一文件组中的文件的文件大小不相等。

请参阅图3,为本申请实施例提供的一种对扫描到的文件进行筛选的过程的示意图。示例性的,终端设备从存储空间中扫描到的所有文件的文件名称列表为可以为图3所示的31,终端设备基于扫描到的各个文件的文件大小对扫描到的所有文件进行分组后,得到的一个或多个第一文件组可以分别为31_1~31_n,其中,n为正整数。示例性的,第一个第一文件组31_1中包括的每个文件的文件大小均相等,例如均为321千字节(kilobyte,KB);第二个第一文件组31_2中包括的每个文件的文件大小均相等,例如均为500KB;第一个第一文件组31_1中包括的文件的文件大小与第二个第一文件组31_2中包括的文件的文件大小不相等。

可选的,在本申请的另一个实施例中,为了提高终端设备的重复文件识别的准确率,终端设备可以将扫描到的文件中文件大小相等且文件类型相同的文件划分至同一组,得到一个或多个第一文件组。该实施例中,同一个第一文件组中的所有文件的文件大小均相等,且文件类型均相同。不同的第一文件组中的文件的文件大小不相等和/或文件类型不相同。

S203,剔除包括单个文件的第一文件组,并计算剩余的第一文件组中各个文件的首尾页散列值,将同一个第一文件组中首尾页散列值相等的文件划分至同一组,得到一个或多个第二文件组。

其中,包括单个文件的第一文件组指文件数量为1的第一文件组。

可选的,如果各个第一文件组是基于文件的文件大小划分得到的,那么,若某个第一文件组中仅包括一个文件,则说明存储空间中没有与该文件的文件大小相等的其他文件,即说明存储空间中没有与该文件重复的其他文件,因此终端设备可以直接剔除该文件,而不对该文件进行文件散列值计算操作,如此可以减少终端设备的计算量,提高重复文件的识别速度。

可选的,如果各个第一文件组是基于文件的文件大小和文件类型划分得到的,那么,若某个第一文件组中仅包括一个文件,则说明存储空间中没有与该文件的文件大小相等且文件类型相同的其他文件,即能够更加说明存储空间中没有与该文件重复的其他文件,因此终端设备可以直接剔除该文件,而不对该文件进行文件散列值计算操作,如此不仅可以减少终端设备的计算量,提高重复文件的识别速度,而且可以提高重复文件识别的准确率。

终端设备剔除掉包括单个文件的第一文件组之后,剩余的各个第一文件组均为包括多个文件的第一文件组,即剩余的各个第一文件组的文件数量均大于1。

示例性的,请继续参阅图3,假设第n-1个第一文件组31_n-1和第n个第一文件组31_n均为包括单个文件的第一文件组,则终端设备将第n-1个第一文件组31_n-1和第n个第一文件组31_n剔除之后,剩余的第一文件组31_1~31_n-2中均包括多个文件。

本申请实施例中,文件的首尾页散列值可以包括文件的首页的散列值和尾页的散列值。

其中,文件的首页指文件的第一个内存页,文件的尾页指文件的最后一个内存页。

可以理解的是,终端设备在获取存储空间中的各个文件的内容时,需要先将文件从存储空间中加载到内容中。由于终端设备进行内存管理的最小单位为内存页,因此,当文件被加载到内存中时,如图4所示,终端设备会先将文件中的内容分割为多个相同大小的内存页,再从存储空间中依次读取文件的各个内存页,进而读取到文件中的全部内容。

示例性的,内存页的大小可以为4KB或8KB等。

需要说明的是,文件的首尾页散列值相等具体指,文件的第一个内存页的散列值和最后一个内存页的散列值均相等。示例性的,若第一文件file1的第一个内存页的散列值与第二文件file2的第一个内存页的散列值相等,且第一文件file1的最后一个内存页的散列值与第二文件file2的最后一个内存页的散列值相等,则说明第一文件file1的首尾页散列值与第二文件file2的首尾页散列值相等。

在一个具体的实施例中,终端设备可以先计算剩余的每个第一文件组中各个文件的第一个内存页的散列值,并将同一个第一文件组中各个文件的第一个内存页的散列值进行对比。可选的,对于第一个内存页的散列值相等的各个文件,终端设备可以计算这些文件的最后一个内存页的散列值,并将这些文件的最后一个内存页的散列值进行对比,最后将第一个内存页的散列值和最后一个内存页的散列值均相等的文件划分到同一个第二文件组中。可选的,对于第一个内存页的散列值不相等的各个文件,终端设备可以直接剔除掉该文件。该实施例中,由于终端设备只需要计算第一个内存页的散列值相等的各个文件的最后一个内存页的散列值,而无需计算第一个内存页的散列值不相等的各个文件的最后一个内存页的散列值,因此可以减少终端设备的计算量,提高终端设备的重复文件识别速度。

在另一个具体的实施例中,终端设备可以先计算剩余的每个第一文件组中各个文件的最后一个内存页的散列值,并将同一个第一文件组中各个文件的最后一个内存页的散列值进行对比。可选的,对于最后一个内存页的散列值相等的各个文件,终端设备可以计算这些文件的第一个内存页的散列值,并将这些文件的第一个内存页的散列值进行对比,最后将第一个内存页的散列值和最后一个内存页的散列值均相等的文件划分到同一个第二文件组中。可选的,对于最后一个内存页的散列值不相等的各个文件,终端设备可以直接剔除掉该文件。该实施例中,由于终端设备只需要计算最后一个内存页的散列值相等的各个文件的第一个内存页的散列值,而无需计算最后一个内存页的散列值不相等的各个文件的第一个内存页的散列值,因此同样可以减少终端设备的计算量,提高终端设备的重复文件识别速度。

可以理解的是,由于不同的第一文件组中包括的文件的文件大小不同,因此,来自不同第一文件组的文件必然不是重复文件。基于此,文件的首尾页散列值对比是在同一个文件组中的各个文件之间进行的,来自不同第一文件组的文件之间不进行首尾页散列值的对比。

本实施例中,第二文件组中可以仅包括一个文件,也可以包括多个文件。同一个第二文件组中的所有文件的首尾页散列值均相等,不同的第二文件组中的文件的首尾页散列值不相等。来自于同一个第一文件组的所有第二文件组中包括的文件的文件大小均相等。

示例性的,请继续参阅图3,终端设备基于剩余的第一文件组(即第一文件组31_1~31_n-2)中各个文件的首尾页散列值,对剩余的每个第一文件组中的各个文件进行二次分组后,得到的第二文件组可以包括:第一个第二文件组32_1_1、第二个第二文件组32_1_2、第三个第二文件组32_2_1、第四个第二文件组32_3_1、第五个第二文件组32_3_2、……、第m个第二文件组32_n-2_1。其中,第一个第二文件组32_1_1和第二个第二文件组32_1_2均来自于第一个第一文件组,第三个第二文件组32_2_1来自于第二个第一文件组,第四个第二文件组32_3_1和第五个第二文件组32_3_2均来自于第三个第一文件组,第m个第二文件组32_n-2_1来自于第n-2个第二文件组。示例性的,第一个第二文件组32_1_1中的各个文件的首尾页散列值均相等,第二个第二文件组32_1_2中的各个文件的首尾页散列值均相等,第三个第二文件组32_2_1中的各个文件的首尾页散列值均均相等。第一个第二文件组32_1_1中的文件的散列值、第二个第二文件组32_1_2中的文件的散列值以及第三个第二文件组32_2_1中的文件的散列值各不相等。此外,第一个第二文件组32_1_2中的各个文件的文件大小与第二个第二文件组32_1_2中的各个文件的文件大小均相等。其中,m为正整数。

示例性的,终端设备可以采用预设的散列函数计算文件的第一个内存页的散列值和最后一个内存页的散列值。示例性的,预设的散列函数可以包括消息摘要算法5(messagedigest algorithm 5,MD5)函数、安全散列算法1(secure hash algorithm 1,SHA-1)函数或安全散列算法256位(secure hash algorithm 256-bit,SHA-256)函数等,本申请实施例对预设的散列函数的具体类型不做特别限定。

S204,剔除包括单个文件的第二文件组,并计算剩余的第二文件组中每个文件的文件散列值。

其中,包括单个文件的第二文件组指文件数量为1的第二文件组。

可以理解的是,如果某个第二文件组中仅包括一个文件,则说明存储空间中没有与该文件的第一个内存页的散列值和最后一个内存页的散列值均相等的其他文件,即说明存储空间中没有与该文件的内容完全相同的文件,也即存储空间中没有与该文件重复的其他文件,因此终端设备可以直接剔除该文件,而不对该文件进行文件散列值计算操作,如此可以进一步减少终端设备的计算量,提高重复文件的识别速度。

终端设备剔除掉包括单个文件的第二文件组之后,剩余的各个第二文件组均为包括多个文件的第二文件组,即剩余的各个第二文件组的文件数量均大于1。示例性的,请继续参阅图3,假设第二个第二文件组32_1_2、第四个第二文件组32_3_1以及第五个第二文件组32_3_2中均包括一个文件,则终端设备将第二个第二文件组32_1_2、第四个第二文件组32_3_1以及第五个第二文件组32_3_2剔除后,剩余的各个第二文件组(即第一个第二文件组32_1_1、第三个第二文件组32_2_1、……、第m个第二文件组32_n-2_1)中均包括多个文件。

其中,文件的文件散列值指针对文件的所有内存页的散列值。文件散列值与第一个内存页的散列值或最后一个内存页的散列值的区别在于,第一个内存页的散列值或最后一个内存页的散列值为文件的单个内存页的散列值,而文件散列值为文件中的全部内容对应的散列值。

在具体实施例中,终端设备可以采用预设的散列函数计算文件的文件散列值。关于散列函数的具体类型可以参考前述实施例中的相关描述,此次不对其进行赘述。

需要说明的是,由于文件散列值的计算为现有技术,因此关于文件的文件散列值的具体计算过程可以参考现有技术中的相关描述,此次不对其进行详述。

在本申请的一个实施例中,终端设备可以仅创建一个线程来计算剩余的所有第二文件组中的每个文件的文件散列值。由于终端设备在S202和S203中已经分别基于文件大小和首尾页散列值过滤掉一些非重复文件,因此仅创建一个线程来计算剩余的所有第二文件组中的每个文件的文件散列值,相对于常用的重复文件识别方法需要计算扫描出的所有文件的文件散列值而言,能够在一定程度减少终端设备的计算量,提高终端设备的重复文件识别速度。

在本申请的另一个实施例中,为了进一步提高终端设备的重复文件识别速度,终端设备可以创建多个线程来计算剩余的各个第二文件组中的每个文件的文件散列值。基于此,S204具体可以包括如图5所示的S2041~S2042,详述如下:

S2041,创建多个线程。

在一个可选的实现方式中,在剩余的所有第二文件组包括的文件的总文件大小小于或等于第一文件大小阈值的情况下,终端设备可以创建预设数量个线程。

其中,预设数量为常数,且预设数量大于1。示例性的,预设数量可以为3,即在第二文件组包括的文件的总文件大小小于或等于第一文件大小阈值的情况下,终端设备可以创建3个线程来计算剩余的所有第二文件组中的每个文件的文件散列值。

其中,第一文件大小阈值可以根据预设数量以及每个线程的最大计算量确定。具体地,第一文件大小阈值可以为预设数量与每个线程的最大计算量的乘积。示例性地,假设每个线程的最大计算量为2.5千兆字节(gigabyte,GB),则第一文件大小阈值可以为2.5*3=7.5GB。

在另一个可选的实现方式中,在剩余的所有第二文件组包括的文件的总文件大小大于第一文件大小阈值的情况下,终端设备可以根据剩余的所有第二文件组包括的文件的总文件大小,在预设数量个线程的基础上动态增加线程。

具体地,终端设备可以创建R个线程,R=S+up_round((D1-YZ)/D2)。其中,S为预设数量,D1为剩余的所有第二文件组包括的文件的总文件大小,YZ为第一文件大小阈值,D2为每个线程的最大计算量,up_round()为向上取整函数。即,在(D1-YZ)/D2为非整数的情况下,up_round((D1-YZ)/D2)为D1-YZ除以D2后得到的结果的整数部分加1;在(D1-YZ)/D2为整数的情况下,up_round((D1-YZ)/D2)为D1-YZ除以D2后得到的结果。

示例性的,假设线程的预设数量为3,第一文件大小阈值为7.5GB,每个线程的最大计算量为2.5GB。基于此,在剩余的所有第二文件组包括的文件的总文件大小为11GB的情况下,终端设备可以创建3+up_round((11-7.5)/2.5)=5个线程;在剩余的所有第二文件组包括的文件的总文件大小为10GB的情况下,终端设备可以创建3+up_round((10-7.5)/2.5)=4个线程。

S2042,将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,使每个线程被分配到的文件的总文件大小相等或近似相等。

在一个可选的实现方式中,终端设备将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,具体可以包括如图6所示的S601~S602,详述如下:

S601,将剩余的所有第二文件组包括的文件的总文件大小与线程的总数量的第一比值,确定为每个线程的平均计算量。

其中,剩余的所有第二文件组包括的文件的总文件大小指,剩余的所有第二文件组包括的所有文件的文件大小之和。

线程的总数量指终端设备为计算剩余的所有第二文件组包括的文件的文件散列值而创建的线程的总数量。

可以理解的是,由于终端设备在S2041中是基于每个线程的实际计算量小于或等于线程的最大计算量的原则创建多个线程的,因此,该步骤计算得到的每个线程的平均计算量均小于或等于线程的最大计算量。

S602,基于每个线程的平均计算量,以单个第二文件组为最小分配单位,按照各个第二文件组的总文件大小从小到大的顺序,依次将剩余的各个第二文件组分配给各个线程,使每个线程被分配到的文件的总文件大小等于或近似等于平均计算量。

本实现方式中,终端设备是以整个第二文件组为最小分配单位,为每个线程分配文件。

终端设备以单个第二文件组为最小分配单位为各个线程分配文件的原则是,保证每个线程被分配到的文件的总文件大小等于或近似等于每个线程的平均计算量。

其中,线程被分配到的文件的总文件大小指线程被分配到的所有文件的文件大小之和。示例性的,假设每个线程均被分配到5个文件,某个线程被分配到的5个文件的文件大小分别为300KB、400KB、600KB、900KB及500KB,那么该线程被分配到的文件的总文件大小为300+400+600+900+500=2700KB。

可选的,终端设备在为各个线程分配文件时,可以先分配小文件的文件组,再分配大文件的文件组。其中,小文件的文件组指文件组中单个文件的文件大小相对较小的文件组,大文件的文件组指文件组中单个文件的文件大小相对较大的文件组。

具体地,终端设备可以先计算每个第二文件组的总文件大小,再基于每个线程的平均计算量以及各个第二文件组的总文件大小,按照各个第二文件组的总文件大小从小到大的顺序,依次将剩余的各个第二文件组分配给各个线程。其中,第二文件组的总文件大小指第二文件组包括的所有文件的文件大小之和。

示例性的,假设每个线程的平均计算量为1GB,按照各个第二文件组的总文件大小从小到大的顺序对所有第二文件组进行排序的排序结果为:第一个第二文件组32_1_1(总文件大小为200兆字节(megabyte,MB))、第三个第二文件组32_2_1(总文件大小为324MB)、第七个第二文件组32_5_1(总文件大小为495MB)、……、第m个第二文件组32_n-2_1(总文件大小为1GB)。由于第一个第二文件组32_1_1的总文件大小、第三个第二文件组32_2_1的总文件大小以及第七个第二文件组32_5_1的总文件大小之和为1019MB,与每个线程的平均计算量仅相差5MB,而排列在第七个第二文件组32_5_1之后的各个第二文件组的总文件大小必然大于495MB,因此,终端设备可以将第一个第二文件组32_1_1、第三个第二文件组32_2_1及第七个第二文件组32_5_1分配给第一个线程,并从排列在第七个第二文件组32_5_1之后的第二文件组开始为第二个线程分配文件,以此类推。

可以理解的是,以整个第二文件组作为最小分配单位为各个线程分配文件,虽然不能保证每个线程被分配到的文件的总文件大小刚好等于线程的平均计算量,但由于线程的平均计算量通常是GB量级的,而线程被分配到的文件的总文件大小该平均计算量之间的误差通常是KB量的,因此该误差通常不会对所有线程的整体文件识别速度造成太大影响。

本实现方式中,由于同一个第二文件组中的文件为重复文件的可能性较大,因此,通过将同一个第二文件组分配给同一个线程进行处理,可以提高重复文件的识别准确率。

此外,由于是以整个第二文件组作为最小分配单位进行文件分配,因此可以节省文件分配时间,进而缩短重复文件的识别时间。

在另一个可选的实现方式中,终端设备将剩余的第二文件组中的文件按照各个线程计算量均等或近似均等的原则分配给各个线程,具体可以包括如图7所示的S701~S704,详述如下:

S701,计算剩余的所有第二文件组包括的文件的总数量与线程的总数量的第二比值。

S702,在第二比值为整数的情况下,为每个线程分配第二比值个文件。

本实现方式中,每个线程被分配到的文件的数量均相等。

示例性的,若剩余的所有第二文件组包括的文件的总数量为333,线程的总数量为3,则终端设备可以为每个线程均分配333/3=111个文件。

S703,在第二比值为非整数的情况下,先为每个线程各分配N个文件,再为多个线程中的M个线程各分配一个文件。

其中,N=floor(X1/Y1),M=X1 mod Y1。X1为剩余的所有第二文件组包括的文件的总数量,Y1为线程的总数量;floor为向下取整函数,floor(X1/Y1)为X1除以Y1后得到的结果的整数部分;mod为取余函数,X1 mod Y1为X1除以Y1后得到的结果的余数部分。

本实现方式中,不同线程被分配到的文件的数量最多相差1。

示例性的,若剩余的所有第二文件组包括的文件的总数量为335,终端设备创建的线程的总数量为3,则终端设备可以先为每个线程均分配floor(333/3)=111个文件,再为多个线程中的任意两个线程再各分配一个文件。

需要说明的是,S702和S703为互斥步骤,终端设备在执行S702的情况下不执行S703,终端设备在执行S703的情况下不执行S702。

可以理解的是,仅基于剩余的所有第二文件组包括的文件的总数量和线程的总数量为各个线程分配文件,可能会导致每个线程被分配到的文件的总文件大小不均衡,例如,有些线程可能会被分配到较多的小文件,有些线程可能会被分配到较多的大文件,这样会导致不同线程的计算量不一致,进而导致不同线程计算完其被分配到的所有文件的文件散列值所花费的时间不一致,具体地,被分配到较多小文件的线程只需花费较短时间便可计算完其被分配到的所有文件的文件散列值,而被分配到较多大文件的线程则需要花费较长时间才能计算完其被分配到的所有文件的文件散列值。然而,由于计算完剩余的第二文件组包括的所有文件的文件散列值所花费的时间,是由最后一个计算完其被分配到的所有文件的文件散列值的线程所花费的时间决定的,因此,仅基于剩余的所有第二文件组包括的文件的总数量为每个线程分配文件,无法保证终端设备在最快的时间内计算完剩余的所有第二文件组包括的所有文件的文件散列值。

基于此,终端设备在基于第二比值为各个线程分配了文件之后,可以根据各个线程被分配到的文件的总文件大小,确定是否有需要进行文件分配调整的目标线程。

需要进行文件分配调整的目标线程指,被分配到的文件的总文件大小偏离线程总文件大小的平均值较多的线程。其中,线程总文件大小的平均值可以为剩余的第二文件组包括的所有文件的总文件大小与线程的总数量的比值,换言之,线程总文件大小的平均值也即线程的平均计算量。示例性的,假设剩余的第二文件组包括的所有文件的总文件大小为2.4GB,线程的总数量为3,则线程总文件大小的平均值为2.4/3=0.8GB。

在一个可选的实现方式中,在终端设备根据各个线程被分配到的文件的总文件大小,确定有需要进行文件分配调整的目标线程时,终端设备可以执行S704。

在另一个可选的实现方式中,在终端设备根据各个线程被分配到的文件的总文件大小,确定没有需要进行文件分配调整的目标线程时,终端设备可以执行S205。

S704,基于每个线程被分配到的文件的总文件大小,对目标线程进行文件分配调整,使每个线程最终被分配到的文件的总文件大小相等或近似相等。

终端设备对目标线程进行文件分配调整的目的是为了使每个线程最终被分配到的文件的总文件大小相等或近似相等,以达到均衡各个线程的计算量的效果。

在一个具体的实现方式中,S704可以包括步骤1~步骤4,详述如下:

步骤1,将所有线程被分配到的文件的总文件大小之和与所述线程的总数量的比值,确定为线程总文件大小的平均值。

所有线程被分配到的文件的总文件大小之和也即剩余的第二文件组包括的所有文件的总文件大小。

步骤2,计算每个线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值。

本申请实施例中,线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值大于或等于0。具体地,若某个线程被分配到的文件的总文件大小小于线程总文件大小的平均值,则该线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值指,该线程被分配到的文件的总文件大小与线程总文件大小的平均值之差的绝对值;若某个线程被分配到的文件的总文件大小大于线程总文件大小的平均值,则该线程被分配到的文件的总文件大小与线程总文件大小的平均值的差值指,该线程被分配到的文件的总文件大小与线程总文件大小的平均值之差。其中,线程被分配到的文件的总文件大小与线程总文件大小的平均值之差指,线程被分配到的文件的总文件大小减去线程总文件大小的平均值。

步骤3,将差值大于第一差值阈值的线程确定为目标线程。

示例性的,第一差值阈值可以根据各个线程的数据处理速率以及预设时间微差量来确定。例如,第一差值阈值可以为各个线程的数据处理速率与预设时间微差量的乘积。

其中,线程的数据处理速率例如可以为线程的文件散列值计算速率。预设时间微差量例如可以为,不同线程计算完文件散列值所消耗的时间之间被允许的最大微差量。

目标线程可以包括被分配到的文件的总文件大小大于线程总文件大小的平均值的第一类线程,以及被分配到的文件的总文件大小小于线程总文件大小的平均值的第二类线程。

步骤4,对目标线程进行文件分配调整,使各个目标线程最终被分配到的文件的总文件大小与线程总文件大小的平均值的差值均小于或等于第一差值阈值。

在一个可选的实现方式中,如果仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程,便能使各个目标线程最终被分配到的文件的总文件大小与线程总文件大小的平均值的差值均小于或等于第一差值阈值,则终端设备可以仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程。

示例性的,假设线程总文件大小的平均值为2400KB。某个第一类线程被分配到的5个文件的文件大小分别为200KB、300KB、500KB、700KB及900KB,即该第一类线程被分配到的文件的总文件大小为2600KB;某个第二类线程被分配到的5个文件的文件大小分别为100KB、200KB、400KB、600KB及900KB,即该第二类线程被分配到的文件的总文件大小为2200KB。由于上述第一类线程中恰好有文件大小为200KB的文件,因此终端设备可以仅从上述第一类线程中筛选出该文件大小为200KB的文件,将其重新分配给上述第二类线程,便可使上述第一类线程和第二类线程最终被分配到的文件的总文件大小均为2400KB。

在另一个可选的实现方式中,如果仅从第一类线程中筛选出一个或多个文件重新分配给第二类线程,无法使各个目标线程最终被分配到的文件的总文件大小与线程总文件大小的平均值的差值均小于或等于第一差值阈值,则终端设备除了从第一类线程中筛选出一个或多个文件重新分配给第二类线程之外,还可以从第二类线程中筛选出一个或多个文件重新分配给第一类线程。

示例性的,假设线程总文件大小的平均值为2400KB。某个第一类线程被分配到的5个文件的文件大小分别为200KB、300KB、400KB、700KB及900KB,即该第一类线程被分配到的文件的总文件大小为2500KB;某个第二类线程被分配到的5个文件的文件大小分别为100KB、300KB、400KB、600KB及900KB,即该第二类线程被分配到的文件的总文件大小为2300KB。由于上述第一类线程中没有文件大小为100KB的文件,因此终端设备除了需要从上述第一类线程中筛选出文件大小为200KB的文件,将其重新分配给上述第二类线程之外,还需要从上述第二类线程中筛选出文件大小为100K的文件,将其重新分配给第一类线程,才能使上述第一类线程和第二类线程最终被分配到的文件的总文件大小均为2400KB。

S205,基于剩余的第二文件组中各个文件的文件散列值,识别剩余的第二文件组中的重复文件。

终端设备可以将剩余的所有第二文件组中文件散列值相等的文件识别为重复文件。

可选的,终端设备在识别出存储空间中的全部重复文件后,可以显示识别出的全部重复文件以及针对各个重复文件的清理控件。如此,用户可以根据实际需求选择对重复文件进行清理。重复文件被清理后可以提高终端设备的存储空间的使用效率和数据管理效率。

可选的,在重复文件识别过程中,终端设备可以实时显示识别出的重复文件的数量。如此可以使用户实时获知终端设备的重复文件识别进度和存储空间中包括的重复文件的数量。

在实际应用场景中,上述重复文件识别方法可以通过终端设备中的一个或多个软件模块实现。电子设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备的软件结构。

示例性的,请参阅图8,为本申请实施例的一种电子设备的软件结构框图。

分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。

应用程序层可以包括一系列应用程序包。

如图8所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,短信息,系统管家应用等应用程序。

示例性的,系统管家应用可以是终端设备出厂时被预装在终端设备中的应用。

本申请实施例中,系统管家应用与第三方安全应用的区别在于,系统管家应用的文件访问权限不受限制,即系统管家应用可以访问终端设备的存储空间中的所有文件,而第三方安全应用的文件访问权限通常会受到一定限制。

系统管家应用可以用于实现清理加速、流量管理、骚扰拦截、电量监控、应用启动管理以及病毒查杀等功能。

应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。

如图8所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。

窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。

内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。

视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。

电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。

资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。

通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。

Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。

核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。

应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。

系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL),重复文件识别模块等。

表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。

媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。

三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。

2D图形引擎是2D绘图的绘图引擎。

重复文件识别模块可以用于对终端设备的存储空间中的重复文件进行识别。

内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。

下面结合捕获拍照场景,示例性说明电子设备软件以及硬件的工作流程。

当电子设备的触摸传感器180K(如图1所示)接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头193(如图1所示)捕获静态图像或视频。

基于上述实施例提供的电子设备的软件架构,本申请实施例进一步给出终端设备实现上述识别重复文件的方法的过程中,终端设备中各个软件模块之间的交互过程的详细说明。

为了便于理解,在说明终端设备中各个软件模块之间的交互过程之前,先对识别重复文件的方法实现过程中可能涉及到的用户界面进行说明。示例性的,请参阅图9,为本申请实施例提供的一种识别重复文件的方法实现过程中涉及到的用户界面示意图。

如图9中的(a)所示,终端设备中可以安装有系统管家应用91。当用户需要对终端设备的存储空间中的重复文件进行清理时,用户可以针对系统管家应用91执行第一操作。第一操作例如可以为点击操作。终端设备可以响应于用户针对系统管家应用91执行的第一操作,显示如图9中的(b)所示的系统管家应用91的主界面911。

如图9中的(b)所示,系统管家应用91的主界面911中例如可以包括清理加速控件9110、流量管理控件、骚扰拦截控件、电量管理控件、应用启动管理控件以及病毒查杀控件等多个功能控件。用户可以通过点击系统管家应用91的主界面911中的任意一个功能控件进入相应功能的详情界面。示例性的,当用户需要清理存储空间中的重复文件时,用户可以针对清理加速控件9110执行第二操作。第二操作例如可以为点击操作。终端设备可以响应于该第二操作,显示如图9中的(c)所示的清理加速功能对应的详情界面912。

可选的,终端设备可以在进入清理加速功能对应的详情界面912后,自动执行重复文件识别操作,即执行图2所示的识别重复文件的方法中的各步骤。

可选的,终端设备在进入清理加速功能对应的详情界面912后,可以在检测到用户针对清理加速功能对应的详情界面912执行的第三操作后,再执行重复文件识别操作。其中,第三操作例如可以为下拉操作。

示例性的,请参阅图10,为本申请实施例提供的一种终端设备实现识别重复文件的方法的时终端设备中各个软件模块之间的交互时序示意图。

终端设备中还配置有重复文件识别模块,该重复文件识别模块可以位于终端设备的软件架构的系统层。基于此,终端设备实现识别重复文件的方法的时,终端设备中各个软件模块之间的交互可以包括如图10所示的S1001~S1008,详述如下:

S1001,系统管家应用响应于用户输入的目标操作,向重复文件识别模块发送重复文件识别指令。

其中,目标操作可以是用户针对图9中的(b)中的清理加速控件9110执行的第二操作,也可以是用户针对图9中的(c)所示的清理加速功能对应的详情界面912执行的第三操作。

S1002,重复文件识别模块接收到重复文件识别指令后,对存储空间中的文件进行扫描。

需要说明的是,该步骤与图2对应的实施例中的步骤S201相同,具体可以参考图2对应的实施例中的步骤S201的相关描述,此次不再进行赘述。在参考时,只需将步骤S201中的执行主体细化为重复文件识别模块即可。

S1003,重复文件识别模块将扫描到的文件中文件大小相等的文件划分至同一组,得到一个或多个第一文件组。

需要说明的是,该步骤与图2对应的实施例中的步骤S202相同,具体可以参考图2对应的实施例中的步骤S202的相关描述,此次不再进行赘述。在参考时,只需将步骤S202中的执行主体细化为重复文件识别模块即可。

S1004,重复文件识别模块剔除包括单个文件的第一文件组,并计算剩余的第一文件组中各个文件的首尾页散列值,将同一个第一文件组中首尾页散列值相等的文件划分至同一组,得到一个或多个第二文件组。

需要说明的是,该步骤与图2对应的实施例中的步骤S203相同,具体可以参考图2对应的实施例中的步骤S203的相关描述,此次不再进行赘述。在参考时,只需将步骤S203中的执行主体细化为重复文件识别模块即可。

S1005,重复文件识别模块剔除包括单个文件的第二文件组,并计算剩余的第二文件组中每个文件的文件散列值。

需要说明的是,该步骤与图2对应的实施例中的步骤S204相同,具体可以参考图2对应的实施例中的步骤S204的相关描述,此次不再进行赘述。在参考时,只需将步骤S204中的执行主体细化为重复文件识别模块即可。

S1006,重复文件识别模块基于剩余的第二文件组中各个文件的文件散列值,识别剩余的第二文件组中的重复文件。

需要说明的是,该步骤与图2对应的实施例中的步骤S205相同,具体可以参考图2对应的实施例中的步骤S205的相关描述,此次不再进行赘述。在参考时,只需将步骤S205中的执行主体细化为重复文件识别模块即可。

S1007,重复文件识别模块向系统管家应用返回重复文件识别结果。

示例性的,重复文件识别结果可以包括重复文件的数量、重复文件的总文件大小、重复文件的名称、重复文件的存储地址以及重复文件的修改时间等信息。

S1008,系统管家应用显示重复文件识别结果。

在一个可选的实现方式中,如图9中的(c)所示,系统管家应用接收到来自重复文件识别模块的重复文件识别结果后,可以在清理加速功能对应的详情界面912中显示重复文件的数量和重复文件的总文件大小等信息。此外,终端设备还可以将清理加速功能对应的详情界面912中的重复文件清理控件9121置为可用状态。基于此,终端设备可以在检测到用户针对重复文件清理控件9121执行的第四操作时,显示如图9中的(d)所示的重复文件详情界面913。用户可以根据实际需求,在重复文件详情界面913中对重复文件进行清理。

需要说明的是,由于本申请实施例中的重复文件识别模块为终端设备的软件系统自带的软件模块,因此其具有访问存储空间中所有文件的权限,基于此,通过重复文件识别模块对存储空间中的文件进行扫描,并对扫描到的文件进行重复文件识别操作,可以扩大重复文件的识别范围,使用户可以对存储空间中的所有重复文件均进行清理。

基于同样的技术构思,本申请实施例还提供了一种电子设备,该电子设备可以包括:一个或多个处理器;一个或多个存储器;该一个或多个存储器存储有一个或多个计算机程序,该一个或多个计算机程序包括指令,当该指令被上述一个或多个处理器执行时,使得电子设备执行上述任一方法实施例中的一个或多个步骤。

基于同样的技术构思,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行程序,该计算机可执行程序在被计算机调用时使计算机执行上述任一方法实施例中的一个或多个步骤。

基于同样的技术构思,本申请实施例还提供了一种芯片系统,包括处理器,处理器与存储器耦合,该处理器执行存储器中存储的计算机可执行程序,以实现上述任一方法实施例中的一个或多个步骤。该芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。

基于同样的技术构思,本申请实施例还提供了一种计算机可执行程序产品,当计算机可执行程序产品在电子设备上运行时,使得该电子设备执行上述任一方法实施例中的一个或多个步骤。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其他实施例的相关描述。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

技术分类

06120116083536