CN108763582B - 文件搜索方法、装置、终端及存储介质 - Google Patents
文件搜索方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN108763582B CN108763582B CN201810593260.2A CN201810593260A CN108763582B CN 108763582 B CN108763582 B CN 108763582B CN 201810593260 A CN201810593260 A CN 201810593260A CN 108763582 B CN108763582 B CN 108763582B
- Authority
- CN
- China
- Prior art keywords
- file
- search
- information
- terminal
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件搜索方法、装置、终端及存储介质,属于文件搜索领域。该方法可以根据获取到的搜索字符,从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件,该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,该文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为该文件的标识;对于每个目标文件,以该目标文件的标识为键,获取该目标文件的上一级文件的标识,并以该上一级文件的标识为键,逐层获取该上一级文件至根文件的文件名,得到目标文件的存储路径;显示该至少一个目标文件中每个目标文件的搜索信息。本申请提供的文件搜索方法的搜索效率较高。
Description
技术领域
本申请涉及文件搜索领域,特别涉及一种文件搜索方法、装置、终端及存储介质。
背景技术
随着终端的存储空间的增大,终端中所能存储的文件的个数也越来越多。为了便于用户查找指定文件,终端一般提供有文件搜索功能。
相关技术中,用户可以在终端提供的搜索框中输入待查找的文件的关键字(例如文件名中的若干字符)。终端获取到该关键字后,可以对其存储的所有文件进行遍历,查找文件名与该关键字匹配的文件,并显示查找出的文件的文件名。
当终端中存储的文件较多时,终端遍历所有文件所需耗费的时间较长,文件搜索的效率较低。
发明内容
本申请实施例提供了一种文件搜索方法、装置、终端及存储介质,可以解决相关技术中的文件搜索方法效率较低的问题。所述技术方案如下:
一方面,提供了一种文件搜索方法,所述方法包括:
获取搜索字符;
根据所述搜索字符,从文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,所述文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,所述文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为所述文件的标识;
对于每个所述目标文件,以所述目标文件的标识为键,获取所述目标文件的上一级文件的标识,并以所述上一级文件的标识为键,逐层获取所述上一级文件至所述目标文件的根文件中每个文件的文件名,得到所述目标文件的存储路径;
显示所述至少一个目标文件中每个目标文件的搜索信息,所述搜索信息至少包括文件名和存储路径。
另一方面,提供了一种文件搜索装置,所述装置包括:
第一获取模块,用于获取搜索字符;
查找模块,用于根据所述搜索字符,从文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,所述文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,所述文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为所述文件的标识;
第二获取模块,用于对于每个所述目标文件,以所述目标文件的标识为键,获取所述目标文件的上一级文件的标识,并以所述上一级文件的标识为键,逐层获取所述上一级文件至所述目标文件的根文件中每个文件的文件名,得到所述目标文件的存储路径;
显示模块,用于显示所述至少一个目标文件中每个目标文件的搜索信息,所述搜索信息至少包括文件名和存储路径。
又一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的文件搜索方法。
再一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的文件搜索方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在搜索文件时,从文件索引数据库中查找文件名与搜索字符匹配的至少一个目标文件。由于该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,且每个文件的文件信息的键为文件的标识,因此相比于遍历终端中存储的每个文件,直接从该文件索引数据库中查找目标文件及其存储路径时所需耗费的时间较少,有效提高了文件搜索的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种文件搜索方法所应用的终端的示意图;
图2是本申请实施例提供的一种文件搜索方法的流程图;
图3是本申请实施例提供的一种文件索引数据库中记录的每个文件信息所包括的参数类型的示意图;
图4是本申请实施例提供的一种目标文件的存储路径的示意图;
图5是本申请实施例提供的另一种文件搜索方法的流程图;
图6是本申请实施例提供的一种搜索客户端的搜索界面的示意图;
图7是本申请实施例提供的一种显示有搜索信息的搜索界面的示意图;
图8是本申请实施例提供的一种文件搜索装置的结构示意图;
图9是本申请实施例提供的另一种文件搜索装置的结构示意图;
图10是本申请实施例提供的又一种文件搜索装置的结构示意图;
图11是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请实施例提供的文件搜索方法所应用的终端的示意图。如图1所示,该终端01可以为手机、平板设备、笔记本电脑或者个人计算机等。
该终端01中配置的操作***可以为视窗操作***,例如Windows操作***。并且,该操作***中所采用的文件***可以为新技术文件***(New Technology File System,NTFS)。采用该NTFS的终端中配置有主文件表(Master File Table,MFT),该MFT是NTFS文件***的核心。MFT由多个MFT项(也称为文件记录)组成,每个MFT项占用1024字节的存储空间。每个MFT项的前几十个字节为固定的头结构,用于描述该MFT项的相关信息。头结构之后的字节用于存放文件或者目录(即文件夹)的属性信息。终端中存储的每个文件,以及每个目录的信息都记录在该MFT中,且每个文件和目录至少对应一个MFT项。
在访问终端存储器中存储的文件时,除了引导扇区中的文件外,访问其他存储区内的任何一个文件前都需要先访问MFT,在MFT中找到该文件的MFT项,然后根据MFT项中记录的属性信息找到文件内容并对其进行访问。
请参考图2,其示出了本申请一个实施例提供的文件搜索方法的流程图。本实施例以该方法应用于图1所示的终端来举例说明。参考图2,该方法可以包括:
步骤101、获取搜索字符。
在本申请实施例中,终端的搜索界面中可以显示有搜索框,用户可以在该搜索框中输入搜索字符,例如可以输入指定文件的文件名,或者该文件名中的若干字符。终端可以在检测到搜索指令后,从该搜索框中获取搜索字符。其中,该搜索指令可以为终端在检测到用户执行的预设的搜索操作后触发生成的。该搜索操作可以为点击该搜索界面中搜索图标的操作,或者也可以为语音操作等。
步骤102、根据该搜索字符,从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
该文件索引数据库中以键值对(Key-Value)的方式记录有终端中存储的每个文件的文件信息,该文件信息可以包括文件的标识、文件名以及上一级文件的标识。其中,每个文件的标识可以唯一标识该文件,例如每个文件的标识可以为文件引用次数(FileReference Number,FRN)。每个文件的文件信息的键(Key)可以为该文件的标识。相应的,每个文件的文件信息的值(Value)可以包括文件名和上一级文件的标识等。
示例的,该文件索引数据库中记录的每个文件的文件信息所包括的参数类型可以如图3所示,即每个文件的文件信息包括:FRN、上一级文件的FRN、文件名、地址指针以及修改时间。
终端获取到该搜索字符后,可以采用预设的匹配算法将该搜索字符与文件索引数据库中每个文件的文件名进行匹配,并确定至少一个目标文件,该每个目标文件的文件名中包含该搜索字符。其中,该匹配算法可以包括快速匹配算法和暴力匹配算法等。
示例的,假设该搜索字符为“aa”,该文件索引数据库中某个文件的文件名为“aa2.gif”,则终端可以将该文件确定为目标文件。
需要说明的是,在本申请实施例中所述的文件可以包括具有具体内容或用途的文件,例如可执行文件、数据文件、类或库文件、文本文件及图像文件等,还可以包括用于存放上述文件的文件夹。
步骤103、对于每个目标文件,以该目标文件的标识为键,获取该目标文件的上一级文件的标识,并以该上一级文件的标识为键,逐层获取该上一级文件至该目标文件的根文件中每个文件的文件名,得到该目标文件的存储路径。
其中,目标文件的上一级文件可以是指该目标文件所属的文件夹,该上一级文件也可以称为父文件。
终端在查找出至少一个目标文件后,对于每个目标文件,终端可以以该目标文件的标识为键,从文件索引数据库中获取该目标文件的文件信息的值,进而可以从该文件信息的值中获取到该目标文件的上一级文件的标识。之后,终端可以继续以该上一级文件的标识为键,从文件索引数据库中获取该上一级文件的文件信息的值,进而可以获取到该上一级文件的文件名,以及该上一级文件的上一级文件的标识。之后,终端可以基于类似的方法逐层获取目标文件的各层上级文件的文件名,直至获取到该目标文件的根文件的文件名。最后,终端即可根据获取到的每个目标文件的各层上级文件的文件名,得到该每个目标文件的存储路径。该存储路径可以是指能够完整描述文件存储位置的绝对路径,该绝对路径也可以称为绝对目录。
示例的,如图4所示,假设某个目标文件的文件名为“aa2.gif”,且该目标文件共包括三层上级文件。则终端可以以该目标文件的标识为键,先获取该目标文件的上一级文件的文件信息的值,确定其上一级文件的文件名为“动图”,并可以获取该文件名为“动图”的文件的上一级文件的标识。进而可以再以该获取到的标识为键,获取文件名为“动图”的文件的上一级文件的文件信息的值,确定该文件的文件名为“图片”,并可以获取到该文件名为“图片”的上一级文件的标识。之后终端可以继续以获取到的标识为键,获取文件名为“图片”的文件的上一级文件(即该目标文件的根文件)的文件信息的值,进而可以确定该根文件的文件名为“E:”。最后,终端即可根据获取到的该目标文件的三层上级文件的文件名,得到该目标文件的存储路径“E:\图片\动图\”。
步骤104、显示该至少一个目标文件中每个目标文件的搜索信息。
终端可以在其搜索界面中显示该每个目标文件的搜索信息,该搜索信息至少可以包括文件名和存储路径。可选的,该搜索信息还可以包括目标文件的文件大小以及修改时间等参数。
综上所述,本申请实施例提供了一种文件搜索方法,该方法可以从文件索引数据库中查找文件名与搜索字符匹配的至少一个目标文件。由于该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,且每个文件的文件信息的键为文件的标识。因此相比于遍历终端中存储的每个文件,直接从该文件索引数据库中查找目标文件及其存储路径时所需耗费的时间较少,有效提高了文件搜索的效率。
图5是本申请实施例提供的另一种文件搜索方法的流程图。在本申请实施例中,图1所示的终端中可以安装有搜索客户端,本实施例以该方法应用于该搜索客户端来举例说明。参考图5,该方法可以包括:
步骤201、启动搜索客户端时,检测该搜索客户端是否为首次启动。
该搜索客户端可以为具有文件快速搜索功能的客户端。终端可以响应于用户的启动操作,启动该搜索客户端。该搜索客户端在启动后,可以检测终端的指定目录中是否存储有文件索引数据库,若未在该指定目录中检测到该文件索引数据库,则可以确定该搜索客户端为首次启动时,并可以执行步骤202,即获取文件的相关信息并构建该文件索引数据库。若搜索客户端在该指定目录中检测到了该文件索引数据库,则可以确定该搜索客户端不为首次启动,并可以执行步骤204。
其中,该指定目录可以为该搜索客户端中预先设定的默认安装目录,也可以为安装该搜索客户端时,用户自主设置的安装目录。
示例的,在本发明实施例中,搜索客户端所构建的文件索引数据库可以采用固定的文件名存储在该指定目录中。搜索客户端可以通过检测该指定目录中是否存储有该固定的文件名的文件,以检测该指定目录中是否存储有该文件索引数据库。
步骤202、从终端的主文件表中获取该终端中存储的每个文件的相关信息。
当该搜索客户端检测到其为首次启动时,为了建立文件索引数据库以实现文件的快速搜索,该搜索客户端可以从终端的MFT中获取该终端中存储的每个文件的相关信息。该相关信息至少可以包括FRN、文件名和上一级文件的FRN。其中,该FRN为MFT中能够唯一标识每个文件和目录(即文件夹)的标识,且该FRN可以为一个64位的字符串。文件的文件名一般包括主文件名和扩展名,且文件名的命名格式可以为:主文件名.扩展名。若某个文件为文件夹,则该文件夹的文件名可以仅包括主文件名。
此外,搜索客户端获取到的每个文件的相关信息还可以包括文件大小、修改时间、用于指示该文件是否为文件夹的指示信息、用于指示该文件是否为隐藏文件的指示信息、文件所存储的磁盘的磁盘序号(也可以称为硬盘序列号)以及文件名的字符串长度等信息。
步骤203、将每个文件的FRN作为该文件的标识,并以该文件的标识为键,在文件索引数据库中以键值对的方式记录每个文件的文件信息。执行步骤206。
搜索客户端可以在终端的内存中构建文件索引数据库,并从每个文件的相关信息中筛选出需要记录在该文件索引数据库中的文件信息,然后即可将筛选出的各个文件的文件信息均记录在该文件索引数据库中。或者,搜索客户端也可以直接将获取到的每个文件的相关信息作为该文件的文件信息记录在文件索引数据库中。由于在MFT中,每个文件的FRN均是唯一的,因此可以采用该FRN作为文件的标识,并以该文件的标识为键(也可以称为关键字),在文件索引数据库中以键值对的方式记录每个文件的文件信息。
其中,每个文件的文件信息除了包括文件的标识,还可以包括文件名以及上一级文件的标识。并且,每个文件的文件信息中,文件名和上一级文件的标识可以作为文件信息的值进行存储。其中,搜索客户端在存储各个文件的文件名时,还可以基于获取到的文件名的字符串长度,为该文件名分配对应大小的内存空间。从而可以避免为所有文件的文件名分配固定大小的内存空间而导致的资源浪费的问题,可以达到优化内存的效果。
可选的,该文件索引数据库中记录的每个文件的文件信息还可以包括:地址指针、文件大小和修改时间中的至少一种。其中,每个文件的修改时间可以是指该文件最近一次被修改的时间。每个文件的地址指针可以指向一个容器,该容器中包括该文件中各个子文件的文件信息。相应的,该地址指针可以为该文件中第一个子文件的文件信息在内存中的存储地址。若某个文件不为文件夹,即该文件中不包括子文件时,该文件的地址指针可以为空。在该文件索引数据库中记录每个文件的地址指针,可以便于在匹配目标文件的过程中,快速遍历该文件索引数据库中的每个文件。
示例的,假设搜索客户端构建的文件索引数据库中记录的每个文件的文件信息所包括的参数类型如图3所示,即每个文件的文件信息包括:FRN、上一级文件的FRN、文件名、地址指针以及修改时间。则该搜索客户端所构建的文件索引数据库可以如表1所示。参考表1,每个文件的文件信息的Key为该文件的FRN,Value可以包括:上一级文件的FRN、文件名、地址指针以及修改时间。例如表1中,FRN为10的文件,其上一级文件的FRN为21、文件名为“aa1.exe”,地址指针为:0x00000001,修改时间为2017/01/05 10:12。
表1
需要说明的是,为了减小搜索客户端后续再次搜索文件时所需耗费的时间和资源,搜索客户端可以在构建得到文件索引数据库后,将该文件索引数据库映射到终端的本地文件中进行保存,以便下次启动时,可以直接从该本地文件中读取该文件索引数据库。实验数据显示,对于存储有百万级别数量的文件的终端,该搜索客户端读取MFT构建文件索引数据库所耗费的时间为30秒左右,但直接从本地文件中读取之前保存的文件索引数据库所需的时间仅为1秒左右。因此,将构建得到的文件索引数据库映射到本地文件中进行保存,可以有效提高后续搜索文件时的搜索效率。
还需要说明的是,为了减小该文件索引数据库占用的空间,搜索客户端在存储该文件索引数据库时,还可以先采用压缩算法对该文件索引数据库进行压缩,然后再存储该压缩后的文件索引数据库。
步骤204、检测***日志中是否记录有该搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录。
当该搜索客户端不为首次启动时,可以确定终端中已经存储了之前构建的文件索引数据库。为了减少文件搜索的时间,该搜索客户端可以直接读取该已构建的文件索引数据库进行文件搜索。但由于从该搜索客户端上一次关闭到本次启动之间的时间段内,终端内存储的文件可能会发生变化,因此为了进一步保证文件搜索的准确性,搜索客户端可以先检测***日志中是否记录有该搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录。
其中,该***日志可以为更新序列号(Update Service Number,USN)日志,该USN日志为NTFS***中用于记录文件修改操作的日志。即终端中新增文件、删除文件以及修改文件名等文件修改操作均会记录在该USN日志中,且该USN日志可以实时将日志内的文件变更记录写入MFT文件。但是该USN日志的文件大小有一定的限制,当文件修改操作过于频繁,将会产生过多的USN记录。当超过USN日志的记录限制时,终端可以将该USN日志清空。
因此,当搜索客户端检测到该***日志中未记录该时间段内的文件变动记录时,可以确定该时间段内的文件变动记录已被清空并写入MFT文件,因此可以执行步骤202,即重新从MFT文件中读取文件信息并构建文件索引数据库;当搜索客户端检测到该***日志中记录有该时间段内的文件变动记录时,则可以执行步骤205。
示例的,该USN日志中针对每个文件修改操作的USN记录均对应一个USN记录号。搜索客户端可以在检测到其不是首次启动时,检测上一次关闭时最后更新的USN记录号的下一个记录号是否记录在当前的USN日志中。若该下一个记录号记录在该USN日志中,则可以确定该USN日志中还记录有上一次关闭到本次开启之间的时间段内的文件变更记录,因此可以执行步骤205。若该下一个记录未记录在该USN日志中时,例如当接收到反馈的错误信息为:ERROR_JOURNAL_ENTRY_DELETED时,该搜索客户端可以确定该USN日志已经被清空过,为了保证文件搜索的准确性,搜索客户端可以重新构建文件索引数据库,即再次执行上述步骤202和步骤203所示的方法。
步骤205、根据该文件变动记录,更新该文件索引数据库。执行步骤206。
当搜索客户端检测到该***日志中记录有该时间段内的文件变动记录时,可以直接根据该时间段内的文件变动记录,更新已建立的文件索引数据库。采用该文件变动记录更新文件索引数据库,不仅可以保证文件搜索的准确性,而且由于无需重新构建该文件索引数据库,因此还可以有效提高文件搜索的效率。
示例的,假设***日志中记录的该搜索客户端上一次关闭到本次开启之间的时间段内的文件变动记录包括:1、删除FRN为30的文件;2、修改FRN为20的文件,且修改时间为2018/04/21 15:20;3、新建FRN为40的文件,且该文件的上一级文件的FRN为24,文件名为dd.doc,修改时间为2018/04/21 22:10。则搜索客户端根据上述3条文件变动记录对表1所示的文件索引数据库进行更新后得到的文件索引数据库可以如表2所示。参考表2可以看出,该更新后的文件索引数据库中删除了FRN为30的文件的文件信息,修改了FRN为20的文件的修改时间,并新增了FRN为40的文件的文件信息。
表2
步骤206、从该搜索客户端的搜索界面中获取搜索字符。
在本申请实施例中,搜索客户端可以在检测到搜索指令后,从其搜索界面中获取搜索字符,该搜索字符可以为用户输入的指定文件的文件名,或者该文件名中的若干字符。该搜索指令可以为搜索客户端在检测到用户执行的预设的搜索操作后触发生成的。该搜索操作可以为点击该搜索界面中搜索图标的操作,或者按压指定按键(例如回车键)的操作,或者也可以为语音操作等。
示例的,图6是本申请实施例提供的一种搜索客户端的搜索界面的示意图。如图6所示,假设该搜索客户端的名称为“xx搜索”,该搜索客户端的搜索界面中可以显示有搜索框11。用户可以在该搜索框11中输入搜索字符,例如可以输入字符“aa”。用户完成搜索字符的输入后,可以点击该搜索界面中显示的搜索图标12。搜索客户端检测到点击该搜索图标12的操作后可以触发生成搜索指令,并可以根据该搜索指令,从该搜索框11中获取到用户输入的搜索字符“aa”。
步骤207、当该搜索字符中包含非拼音字符时,采用暴力匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
在本申请实施例中,为了提高搜索的准确率和效率,搜索客户端还可以先检测该搜索字符所包括的字符的类型,例如可以检测该搜索字符中是否包含非拼音字符。该搜索客户端可以根据检测结果采用不同类型的匹配算法从文件索引数据库中查找文件名与该搜索字符匹配的目标文件。
可选的,当该搜索字符中包含非拼音字符时,搜索客户端可以采用暴力匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
其中,该非拼音字符可以是指除拼音字符之外的字符,例如可以包括意音字符。该拼音字符(也称为表音文字)可以是指采用字母来表示语音的字符,例如可以包括英文字符、法文字符和德文字符等由拉丁字母组成的字符。该意音字符(也称为表意文字)可以是指采用象征性书写符号记录词或词素的文字,例如可以包括汉字。
搜索客户端采用该暴力匹配算法确定目标文件时,可以将该搜索字符与文件索引数据库中每个文件信息中的文件名逐一进行对比,并可以将文件名中包含该搜索字符(即文件名与该搜索字符匹配)的文件确定为目标文件。
示例的,假设搜索客户端获取到的搜索字符为“a表”,则由于该搜索字符中包含非拼音字符“表”,因此该搜索客户端可以采用暴力匹配算法从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
步骤208、当该搜索字符中不包含非拼音字符时,采用快速匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
当该搜索字符中不包含非拼音字符时,搜索客户端可以直接采用快速匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件,该快速匹配算法的计算效率较高。其中,该快速匹配算法可以包括后向非确定性匹配(BackwardNondeterminstic Dawg Matching,BNDM)算法、克努特-莫里斯-普拉特(Knuth-Morris-Pratt,KMP)算法、布瓦耶-摩尔(Boyer-Moore,BM)算法或上述任一算法的改进算法等。
示例的,假设搜索客户端获取到的搜索字符为“aa”,则由于该搜索字符中不包含非拼音字符,因此终端可以采用快速匹配算法从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
可选的,在本申请实施例中,当搜索客户端采用快速匹配算法查找目标文件时,可以仅开启两条搜索线程进行搜索,减少了文件搜索过程中占用的资源。而相关技术中的文件搜索过程中,一般会开启数十个搜索线程进行搜索,容易造成终端资源的浪费。并且当多个搜索线程同时访问终端中同一个存储单元时,容易引起访问异常,导致搜索客户端的异常崩溃。因此本申请实施例提供的搜索方法不仅可以减少搜索过程中占用的资源,还可以避免搜索客户端出现异常,保证了搜索的可靠性。
可选的,当该文件索引数据库中记录的每个文件的文件信息中还包括地址指针时,由于该地址指针可以指示该文件的第一个子文件的文件信息的存储地址,因此终端在确定与搜索字符匹配的目标文件时,可以根据每个文件的地址指针,快速搜索到该文件所包括的各个子文件的文件信息,进而可以快速遍历该文件索引数据库中每个文件的文件信息,以查找文件名与该搜索字符匹配的至少一个目标文件。
需要说明的是,本申请实施例提供的搜索客户端还可以支持通配符匹配及正则匹配。其中,通配符一般可以包括“*”和“?”,当用户不知道待搜索的文件的完整文件名时,可以在输入搜索字符时采用通配符代替该文件名中的若干字符。搜索客户端可以识别出搜索字符中包含的通配符,并能够基于通配符匹配原则对该搜索字符进行匹配。当用户输入的搜索字符为一组描述字符串特征的字符(即正则表达式)时,搜索客户端可以基于正则匹配的原则,获取文件名满足该正则表达式的目标文件。
步骤209、对于每个目标文件,以该目标文件的标识为键,获取该目标文件的上一级文件的标识,并以该上一级文件的标识为键,逐层获取该上一级文件至该目标文件的根文件中每个文件的文件名,得到该目标文件的存储路径。
在本申请实施例中,目标文件的上一级文件可以是指该目标文件所属的文件夹。终端在查找出至少一个目标文件后,对于每个目标文件,终端可以根据该目标文件的文件信息,对该目标文件进行逐层回溯,从而确定该目标文件的存储路径。
其中,该回溯的过程可以包括:以目标文件的标识为键,获取目标文件的上一级文件的标识,并以该上一级文件的标识为键,获取该上一级文件的文件信息的值,从该上一级文件的文件信息的值中获取到该上一级文件的文件名,以及该上一级文件的上一级文件的标识;之后继续以获取到的标识为键,获取该上一级文件的上一级文件的文件信息的值,并从该文件信息的值中获取文件名,直至获取到根文件(即最上级文件)的文件名。最后,搜索客户端即可根据获取到的目标文件的各层上级文件的文件名,得到能够完整描述该目标文件的存储位置的存储路径,即该目标文件的绝对路径。
示例的,假设搜索客户端查找到的与搜索字符“aa”匹配的某个目标文件的文件名为“aa1.exe”。若搜索客户端以该目标文件FRN为键,获取到该目标文件的文件信息的值,并从该文件信息的值中获取到该目标文件的上一级文件的FRN。若该搜索客户端以上一级文件的FRN为键,获取到了该上一级文件的文件信息的值,从该文件信息的值中获取到该上一级文件的文件名为“本地下载”,且获取到该上一级文件的上一级文件的FRN。之后,终端则能够以该上一级文件的上一级文件的FRN为键,继续获取该上一级文件的上一级文件的文件信息的值,并根据获取到的文件信息的值,获取到该上一级文件的上一级文件的文件名为“D:”(即终端的D盘),且该文件名为“D:”的文件为根文件。则搜索客户端根据获取到的各层上级文件的文件名,可以确定该文件名为“aa1.exe”的目标文件的存储路径为“D:\本地下载\”。
步骤210、显示该至少一个目标文件中每个目标文件的搜索信息。
进一步的,搜索客户端即可在其搜索界面中显示各个目标文件的搜索信息,该搜索信息至少可以包括文件名和存储路径。可选的,每个目标文件的搜索信息还可以包括该目标文件的文件大小以及修改时间等参数。该文件大小以及修改时间等参数可以为搜索客户端从目标文件的相关信息中获取到的。
示例的,搜索客户端可以将获取到的各个目标文件的搜索信息写入列表(list)并进行显示。将搜索信息写入列表可以便于后续对该搜索信息进行***和删除等更新操作。
图7是本申请实施例提供的一种显示有搜索信息的搜索界面的示意图。如图7所示,该搜索界面还可以包括搜索结果框13,搜索客户端可以在该搜索结果框13中以列表的形式显示各个目标文件的搜索信息。在图7所示的搜索信息中,第一列为各个目标文件的文件名,由于该文件名都是根据搜索字符“aa”匹配得到的,因此每个目标文件的文件名中均包含该搜索字符“aa”。该搜索信息中的第二列为各个目标文件的存储路径,以便用户可以根据该存储路径直观判断该目标文件是否为想要搜索的文件。例如,文件名为“aabb.png”的目标文件的存储路径为“E:\图片\”。该搜索信息中的第三列为各个目标文件的文件大小,未显示大小的目标文件可以为文件夹。用户通过该各个目标文件的文件大小,也可以直观判断该目标文件是否为想要搜索的文件。例如,文件名为“aabb.png”的目标文件的文件大小为2千字节(KB),文件名为“aa1.exe”的目标文件的文件大小为29兆字节(MB)。该搜索信息中的第四列为各个目标文件的修改日期。例如,文件名为“aa下载”的目标文件的修改日期为2018/04/20 20:40。
在一种可选的实现方式中,搜索客户端在显示各个目标文件的搜索信息后,当检测到针对某个目标文件的文件名的选定操作时,可以打开该目标文件,或者打开该目标文件所在的文件夹,以便用户查看该文件夹中其他相关文件或查看该文件夹的信息。其中,该选定操作可以为右击操作或者双击操作等,本申请实施例对此不做限定。
在一种可选的实现方式中,搜索客户端在显示各个目标文件的搜索信息后,当检测到排序操作时,还可以根据该排序操作所指定的参数,对该各个目标文件的搜索信息进行排序,以便用户可以快速查找到其所需的文件。其中,该排序操作可以为针对该搜索界面显示的搜索信息中的某个参数的点击操作。该参数可以为文件名、存储路径、大小和修改时间中的任一参数。
示例的,若该排序操作为针对文件名的点击操作,则终端可以将各个目标文件的搜索信息,按照文件名的首字母顺序进行排序。若该排序操作为针对文件大小的点击操作,则终端可以将各个目标文件的搜索信息,按照文件大小顺序(例如由大到小,或者由小到大的顺序)进行排序。若该排序操作为针对存储路径的点击操作,则终端可以将各个目标文件的搜索信息,按照存储路径的首字母顺序进行排序。若该排序操作为针对修改时间的点击操作,则终端可以将各个目标文件的搜索信息,按照修改时间的先后顺序(例如由近至远,或者由远至近的顺序)进行排序。
在一种可选的实现方式中,搜索客户端还可以在搜索界面中显示搜索到的目标文件的总个数,以及搜索耗时。示例的,参考图7可以看出,搜索客户端对搜索字符“aa”进行搜索后,共获取到了1042个结果,但搜索耗时仅为16毫秒(ms)。该搜索方法的搜索效率较高。
需要说明的是,在本申请实施例中,在上述步骤204之后,当搜索客户端检测到***日志中未记录其上一次关闭到本次启动之间的时间段内的文件变动记录时,也可以根据终端中已存储的文件索引数据库执行上述步骤206至步骤208所示的方案。之后,再执行上述步骤202至步骤203所示的方法。即搜索客户端可以先搜索目标文件,然后再重新构建文件索引数据库。
步骤211、检测***日志中是否存在新增的文件变动记录。
在本申请实施例中,为了保证文件搜索结果的准确性,搜索客户端还可以在构建或者读取文件索引数据库后,继续检测***日志中是否存在新增的文件变动记录,例如可以按照预设的检测周期检测该***日志中是否存在新增的文件变动记录,或者也可以对该***日志进行实时检测。当搜索客户端检测到新增的文件变动记录时,可以执行步骤212;当搜索客户端未检测到新增的文件变动记录时,则可以执行步骤211,即继续对该***日志进行检测。
示例的,搜索客户端可以在构建或者读取文件索引数据库后,开设一个监控线程,该监控线程可以每隔1.5秒扫描一遍USN日志,以检测该USN日志中是否存在新增的USN记录。
步骤212、根据该新增的文件变动记录,更新该文件索引数据库,以及每个目标文件的搜索信息。
当搜索客户端检测到新增的文件变动记录时,可以根据该新增的文件变动记录,更新该文件索引数据库,并可以更新搜索界面中所显示的各个目标文件的搜索信息,从而实现了搜索结果的实时更新,提高了搜索结果的准确性。
示例的,该监控线程可以将该1.5秒间隔内新增的文件变更记录件同步到文件索引数据库以及该搜索界面显示的搜索信息中。
需要说明的是,本发明实施例提供的文件搜索方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。例如步骤211至步骤212可以根据情况进行删除。或者,步骤201、步骤204和步骤205也可以根据情况进行删除,也即是,该搜索客户端可以在每次启动后直接执行上述步骤202和步骤203以构建文件索引数据库。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
综上所述,本申请实施例提供了一种文件搜索方法,该方法可以从文件索引数据库中查找文件名与搜索字符匹配的至少一个目标文件。由于该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,且每个文件的文件信息的键为文件的标识。因此相比于遍历终端中存储的每个文件,直接从该文件索引数据库中查找目标文件时所需耗费的时间较少,有效提高了文件搜索的效率。并且,该文件搜索方法还可以根据搜索字符中包含的字符类型,选择不同的匹配算法匹配目标文件,有效提高了该文件搜索方法的灵活性和搜索效率,改善了用户体验。
在一种可选的实现方式中,本申请实施例提供的文件搜索方法可以用于搜索病毒文件,例如可以用于搜索采用统一码(UNICODE)反转字符串进行处理后的病毒文件。
其中,UNICODE反转字符串是Unicode定义的一种能够实现文本反向排列的字符串。其中,反向排列也称为从右向左开始覆盖(Start of right-to-left override,RLO),因此UNICODE反转字符串的控制字符是RLO,美国信息交换标准代码(American StandardCode for Information Interchange,ASCII)是0x3F,只要在待转换的字符串前加上0x3F就可以实现文本的反向排列。一些病毒传播平台常采用该UNICODE反转字符串对病毒文件的文件名进行反转,以隐藏该病毒文件的文件类型。例如,采用该UNICODE反转字符串可以将文件名“gpj.exe”转换为“exe.jpg”,使得用户可能误将该扩展名为exe的可执行程序当做扩展名为jpg的图片。
相关技术中,终端从其存储的文件中扫描病毒文件时,需要遍历计算其存储的每个文件的消息摘要算法第五版(Message-Digest Algorithm 5,MD5)值,并将计算得到的每个文件的MD5值与预先获取到的病毒文件的MD5值进行对比,从而确定该文件是否为病毒文件。由于相关技术中的方法需要计算并对比每个文件的MD5值,当终端中存储的文件的个数较多时,该病毒文件的搜索效率较低。并且,该扫描病毒文件的方法也无法对采用UNICODE反转字符串进行处理后的病毒文件进行针对性的查找。
而在本申请实施例中,由于采用该UNICODE反转字符串进行处理后的病毒文件的文件名具有一定规律性,即扩展名分隔符“.”前后的若干字符均为常用的扩展名字符。因此用户可以基于该规律,在搜索客户端的搜索框中输入采用UNICODE反转字符串进行处理后的病毒文件的文件名中可能包含的字符。搜索客户端获取到用户输入的搜索字符后,即可从文件索引数据库中快速搜索出终端中采用该UNICODE反转字符串的病毒文件。
当然,除了搜索采用该UNICODE反转字符串进行处理后的病毒文件,用户还可以基于病毒文件黑名单中记录的文件名,驱动搜索客户端对其他类型的病毒文件进行搜索。
图8是本申请实施例提供的一种文件搜索装置的结构示意图。该装置可应用于图1所示的终端01中,参考图8,该装置可以包括:
第一获取模块301,用于获取搜索字符。
查找模块302,用于根据该搜索字符,从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件,该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,该文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为该文件的标识。
第二获取模块303,用于对于每个目标文件,以该目标文件的标识为键,获取该目标文件的上一级文件的标识,并以该上一级文件的标识为键,逐层获取该上一级文件至该目标文件的根文件中每个文件的文件名,得到该目标文件的存储路径。
显示模块304,用于显示该至少一个目标文件中每个目标文件的搜索信息,该搜索信息至少包括文件名和存储路径。
图9是本申请实施例提供的另一种文件搜索装置的结构示意图。参考图9,该装置还可以包括:
第三获取模块305,用于在根据该搜索字符,从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件之前,从该终端的主文件表中获取该终端中存储的每个文件的相关信息,该相关信息至少包括文件引用次数、文件名和上一级文件的文件引用次数。
记录模块306,用于将每个文件的文件引用次数作为该文件的标识,并以该文件的标识为键,在文件索引数据库中以键值对的方式记录每个文件的文件信息。
可选的,该终端中安装有搜索客户端,该第一获取模块301可以用于:
启动该搜索客户端,从该搜索客户端的搜索界面中获取该搜索字符。
可选的,如图9所示,该装置还可以包括:
第一检测模块307,用于在启动该搜索客户端之后,检测该终端的指定目录中是否存储有该文件索引数据库。
相应的,该第三获取模块305可以用于:
当该第一检测模块307未在该指定目录中检测到该文件索引数据库时,确定该搜索客户端为首次启动,从该主文件表中获取该终端中存储的每个文件的相关信息。
可选的,该第一检测模块307,还可以用于当在该指定目录中检测到该文件索引数据库时,确定该搜索客户端不为首次启动,并检测***日志中是否记录有该搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录。
相应的,该第三获取模块305还可以用于:
当该第一检测模块307检测到该***日志中未记录该搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录时,从该主文件表中获取该终端中存储的每个文件的相关信息。
可选的,参考图9,该装置还可以包括:
第一更新模块308,用于当该***日志中记录有该搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录时,根据该文件变动记录,更新该文件索引数据库。
可选的,图10是本申请实施例提供的又一种文件搜索装置的结构示意图。参考图10,该装置还可以包括:
第二检测模块309,用于在该从文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件之后,检测***日志中是否存在新增的文件变动记录。
第二更新模块310,用于当检测到新增的文件变动记录时,根据该新增的文件变动记录,更新该文件索引数据库,以及每个目标文件的搜索信息。
可选的,该第二检测模块309可以用于:
按照预设的检测周期检测该***日志中是否存在新增的文件变动记录。
可选的,该查找模块302可以用于:
当该搜索字符中包含非拼音字符时,采用暴力匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件;
当该搜索字符中不包含非拼音字符时,采用快速匹配算法从该文件索引数据库中查找文件名与该搜索字符匹配的至少一个目标文件。
可选的,该文件信息还包括:地址指针,该地址指针为该文件中第一个子文件的文件信息的存储地址;该查找模块302,可以用于:
根据每个文件的地址指针,遍历所述文件索引数据库中的文件信息,以查找文件名与所述搜索字符匹配的至少一个目标文件。
可选的,文件信息还包括:文件大小和修改时间;相应的,该搜索信息还可以包括:该文件大小和该修改时间。
可选的,参考图9,该装置还可以包括:
压缩模块311,用于在该文件索引数据库中以键值对的方式记录每个文件的文件信息之后,采用压缩算法对该文件索引数据库进行压缩。
存储模块312,用于存储压缩后的文件索引数据库。
综上所述,本申请实施例提供了一种文件搜索装置,该装置可以从文件索引数据库中查找文件名与搜索字符匹配的至少一个目标文件。由于该文件索引数据库中以键值对的方式记录有终端中存储的每个文件的文件信息,且每个文件的文件信息的键为文件的标识。因此相比于遍历终端中存储的每个文件,直接从该文件索引数据库中查找目标文件时所需耗费的时间较少,有效提高了文件搜索的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图11示出了本发明一个示例性实施例提供的终端1100的结构框图。该终端1100可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的文件搜索方法。
在一些实施例中,终端1100还可选包括有:***设备接口1103和至少一个***设备。处理器1101、存储器1102和***设备接口1103之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1103相连。具体地,***设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
***设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和***设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和***设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种终端,所述终端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集。该至少一条指令、至少一段程序、代码集或指令集经配置以由一个或者一个以上处理器执行,以实现上述方法实施例所提供的文件搜索方法。
本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、该代码集或指令集可以由处理器加载并执行,以实现上述方法实施例所提供的文件搜索方法。
可选地,上述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品被执行时,可以实现上述方法实施例所提供的文件搜索方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种文件搜索方法,其特征在于,所述方法包括:
从终端的主文件表中获取所述终端中存储的每个文件的相关信息,所述相关信息至少包括文件引用次数、文件名和上一级文件的文件引用次数;
将每个文件的文件引用次数作为所述文件的标识,并以所述文件的标识为键,在文件索引数据库中以键值对的方式记录每个文件的文件信息;
获取搜索字符;
根据所述搜索字符,从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,所述文件索引数据库中以键值对的方式记录有所述终端中存储的每个文件的文件信息,所述文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为所述文件的标识;
对于每个所述目标文件,以所述目标文件的标识为键,获取所述目标文件的上一级文件的标识,并以所述上一级文件的标识为键,逐层获取所述上一级文件至所述目标文件的根文件中每个文件的文件名,得到所述目标文件的存储路径;
显示所述至少一个目标文件中每个目标文件的搜索信息,所述搜索信息至少包括文件名和存储路径。
2.根据权利要求1所述的方法,其特征在于,所述终端中安装有搜索客户端,所述获取搜索字符,包括:
启动所述搜索客户端,从所述搜索客户端的搜索界面中获取所述搜索字符;
所述方法还包括:检测所述终端的指定目录中是否存储有所述文件索引数据库;
所述从终端的主文件表中获取所述终端中存储的每个文件的相关信息,包括:
当未在所述指定目录中检测到所述文件索引数据库时,确定所述搜索客户端为首次启动,从所述主文件表中获取所述终端中存储的每个文件的相关信息。
3.根据权利要求1所述的方法,其特征在于,所述终端中安装有搜索客户端,所述获取搜索字符,包括:
启动所述搜索客户端,从所述搜索客户端的搜索界面中获取所述搜索字符;
所述方法还包括:
检测所述终端的指定目录中是否存储有所述文件索引数据库;
当在所述指定目录中检测到所述文件索引数据库时,确定所述搜索客户端不为首次启动,检测***日志中是否记录有所述搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录;
所述从终端的主文件表中获取所述终端中存储的每个文件的相关信息,包括:
当检测到所述***日志中未记录所述搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录时,从所述主文件表中获取所述终端中存储的每个文件的相关信息。
4.根据权利要求3所述的方法,其特征在于,在所述检测***日志中是否记录有所述搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录之后,所述方法还包括:
当所述***日志中记录有所述搜索客户端上一次关闭到本次启动之间的时间段内的文件变动记录时,根据所述文件变动记录,更新所述文件索引数据库。
5.根据权利要求1至4任一所述的方法,其特征在于,所述从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件之后,所述方法还包括:
检测***日志中是否存在新增的文件变动记录;
当检测到新增的文件变动记录时,根据所述新增的文件变动记录,更新所述文件索引数据库,以及每个所述目标文件的搜索信息。
6.根据权利要求5所述的方法,其特征在于,所述检测***日志中是否存在新增的文件变动记录,包括:
按照预设的检测周期检测所述***日志中是否存在新增的文件变动记录。
7.根据权利要求1至4任一所述的方法,其特征在于,所述根据所述搜索字符,从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,包括:
当所述搜索字符中包含非拼音字符时,采用暴力匹配算法从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件。
8.根据权利要求1至4任一所述的方法,其特征在于,所述根据所述搜索字符,从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,包括:
当所述搜索字符中不包含非拼音字符时,采用快速匹配算法从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件。
9.根据权利要求1至4任一所述的方法,其特征在于,所述文件信息还包括:地址指针,所述地址指针用于指示所述文件中第一个子文件的文件信息的存储地址;
所述根据所述搜索字符,从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,包括:
根据每个文件的地址指针,遍历所述文件索引数据库中的文件信息,以查找文件名与所述搜索字符匹配的至少一个目标文件。
10.根据权利要求1至4任一所述的方法,其特征在于,所述文件信息还包括:文件大小和修改时间;
所述搜索信息还包括:所述文件大小和所述修改时间。
11.根据权利要求1至4任一所述的方法,其特征在于,所述在文件索引数据库中以键值对的方式记录每个文件的文件信息之后,所述方法还包括:
采用压缩算法对所述文件索引数据库进行压缩;
存储压缩后的文件索引数据库。
12.一种文件搜索装置,其特征在于,所述装置包括:
第三获取模块,用于从终端的主文件表中获取所述终端中存储的每个文件的相关信息,所述相关信息至少包括文件引用次数、文件名和上一级文件的文件引用次数;
记录模块,用于将每个文件的文件引用次数作为所述文件的标识,并以所述文件的标识为键,在文件索引数据库中以键值对的方式记录每个文件的文件信息;
第一获取模块,用于获取搜索字符;
查找模块,用于根据所述搜索字符,从所述文件索引数据库中查找文件名与所述搜索字符匹配的至少一个目标文件,所述文件索引数据库中以键值对的方式记录有所述终端中存储的每个文件的文件信息,所述文件信息包括文件的标识、文件名以及上一级文件的标识,且每个文件的文件信息的键为所述文件的标识;
第二获取模块,用于对于每个所述目标文件,以所述目标文件的标识为键,获取所述目标文件的上一级文件的标识,并以所述上一级文件的标识为键,逐层获取所述上一级文件至所述目标文件的根文件中每个文件的文件名,得到所述目标文件的存储路径;
显示模块,用于显示所述至少一个目标文件中每个目标文件的搜索信息,所述搜索信息至少包括文件名和存储路径。
13.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至11任一所述的文件搜索方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至11任一所述的文件搜索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810593260.2A CN108763582B (zh) | 2018-06-11 | 2018-06-11 | 文件搜索方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810593260.2A CN108763582B (zh) | 2018-06-11 | 2018-06-11 | 文件搜索方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108763582A CN108763582A (zh) | 2018-11-06 |
CN108763582B true CN108763582B (zh) | 2023-04-21 |
Family
ID=64021509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810593260.2A Active CN108763582B (zh) | 2018-06-11 | 2018-06-11 | 文件搜索方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108763582B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131340B (zh) * | 2019-06-25 | 2024-02-20 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
CN110727641B (zh) * | 2019-10-21 | 2023-10-27 | 中国民航信息网络股份有限公司 | 一种日志的查找方法及装置 |
CN111045994B (zh) * | 2019-12-25 | 2023-08-22 | 山东方寸微电子科技有限公司 | 一种基于kv数据库的文件分类检索方法及*** |
CN111274207A (zh) * | 2020-01-16 | 2020-06-12 | 青岛科技大学 | 基于数据可视化分析的新型文件检索方法及*** |
CN111338853B (zh) * | 2020-03-16 | 2023-06-16 | 南京云信达科技有限公司 | 一种基于Linux的数据实时存储***及方法 |
CN111427612A (zh) * | 2020-04-15 | 2020-07-17 | 赞同科技股份有限公司 | 资源索引的校验方法及*** |
CN111680212B (zh) * | 2020-06-05 | 2024-07-05 | 华为技术有限公司 | 存储内容搜索方法、***和电子设备 |
CN112181910B (zh) * | 2020-09-25 | 2024-06-04 | 炬芯科技股份有限公司 | 一种扩展短文件名生成方法、文件访问方法以及设备 |
CN112612754B (zh) * | 2020-12-31 | 2024-07-05 | 深圳市大富网络技术有限公司 | 一种文件搜索方法、***、装置及计算机存储介质 |
CN112818080B (zh) * | 2021-02-08 | 2023-06-30 | 腾讯科技(深圳)有限公司 | 搜索方法、装置、设备及存储介质 |
CN112784253B (zh) * | 2021-02-09 | 2024-06-11 | 珠海豹趣科技有限公司 | 文件***的信息获取方法、装置、电子设备及存储介质 |
CN113032784B (zh) * | 2021-03-26 | 2023-07-21 | 安天科技集团股份有限公司 | 一种威胁处置方法、威胁处置工具和计算机可读介质 |
CN115277206B (zh) * | 2022-07-28 | 2023-09-05 | 通号智慧城市研究设计院有限公司 | 数据处理方法和服务器 |
CN117648288A (zh) * | 2022-09-05 | 2024-03-05 | 华为技术有限公司 | 文件处理方法及电子设备 |
CN115309702B (zh) * | 2022-10-09 | 2023-03-24 | 中孚信息股份有限公司 | 基于usn日志的文件检索管理方法、装置、***、设备 |
CN117220935B (zh) * | 2023-09-04 | 2024-02-20 | 河北润博星原科技发展有限公司 | 一种基于移动计算机的网络安全监测*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004275A (ja) * | 2005-06-21 | 2007-01-11 | Sharp Corp | 電子ファイル検索装置、電子ファイル検索方法、電子ファイル検索プログラム、およびこれを記録した記録媒体 |
US7752226B1 (en) * | 2002-12-20 | 2010-07-06 | Symantec Operating Corporation | Reverse pathname lookup by inode identifier |
CN105279278A (zh) * | 2015-11-13 | 2016-01-27 | 珠海市君天电子科技有限公司 | 文件的搜索方法及装置 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN108038114A (zh) * | 2017-10-17 | 2018-05-15 | 广东欧珀移动通信有限公司 | 一种路径查询方法、终端、计算机可读存储介质 |
-
2018
- 2018-06-11 CN CN201810593260.2A patent/CN108763582B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752226B1 (en) * | 2002-12-20 | 2010-07-06 | Symantec Operating Corporation | Reverse pathname lookup by inode identifier |
JP2007004275A (ja) * | 2005-06-21 | 2007-01-11 | Sharp Corp | 電子ファイル検索装置、電子ファイル検索方法、電子ファイル検索プログラム、およびこれを記録した記録媒体 |
CN105279278A (zh) * | 2015-11-13 | 2016-01-27 | 珠海市君天电子科技有限公司 | 文件的搜索方法及装置 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN108038114A (zh) * | 2017-10-17 | 2018-05-15 | 广东欧珀移动通信有限公司 | 一种路径查询方法、终端、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108763582A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763582B (zh) | 文件搜索方法、装置、终端及存储介质 | |
CN107077292B (zh) | 剪贴信息提供方法和装置 | |
CN109189879B (zh) | 电子书籍显示方法及装置 | |
US20150177903A1 (en) | Method and apparatus for controlling scale resolution in electronic device | |
WO2019061040A1 (zh) | 一种文件管理方法及装置 | |
KR102625254B1 (ko) | 입력기를 통해 이미지와 관련된 정보를 어플리케이션에 제공하는 전자 장치 및 방법 | |
CN110414232B (zh) | 恶意程序预警方法、装置、计算机设备及存储介质 | |
CN108132790B (zh) | 检测无用代码的方法、装置及计算机存储介质 | |
CN112269853A (zh) | 检索处理方法、装置及存储介质 | |
KR102629139B1 (ko) | 멀티미디어 콘텐트를 캡쳐하는 전자 장치 및 방법 | |
CN112632445A (zh) | 网页播放方法、装置、设备及存储介质 | |
KR20180086639A (ko) | 전자 장치 및 전자 장치 제어 방법 | |
KR20180121273A (ko) | 객체에 대응하는 콘텐트를 출력하기 위한 방법 및 그 전자 장치 | |
KR102316846B1 (ko) | 미디어 컨텐츠를 선별하는 방법 및 이를 구현하는 전자장치 | |
CN110932964A (zh) | 一种信息的处理方法及装置 | |
CN112230781A (zh) | 字符推荐方法、装置及存储介质 | |
CN111475611B (zh) | 词典管理方法、装置、计算机设备及存储介质 | |
US11144515B2 (en) | Efficient clustered persistence | |
CN112084157A (zh) | 文件恢复方法、装置、计算机设备及存储介质 | |
CN112764600A (zh) | 资源处理方法、装置、存储介质及计算机设备 | |
CN114253976A (zh) | 基于位图评分的搜索方法和装置 | |
CN113301422B (zh) | 获取视频封面的方法、终端及存储介质 | |
CN114282494A (zh) | 信息显示方法、装置、电子设备及存储介质 | |
CN111125095B (zh) | 数据前缀添加的方法、装置、电子设备及介质 | |
KR102488359B1 (ko) | 어휘 데이터베이스를 처리하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |