CN106227751A - 一种存储文件的扫描方法和扫描设备 - Google Patents
一种存储文件的扫描方法和扫描设备 Download PDFInfo
- Publication number
- CN106227751A CN106227751A CN201610552537.8A CN201610552537A CN106227751A CN 106227751 A CN106227751 A CN 106227751A CN 201610552537 A CN201610552537 A CN 201610552537A CN 106227751 A CN106227751 A CN 106227751A
- Authority
- CN
- China
- Prior art keywords
- thread
- file
- current
- scanned
- scanning
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种存储文件的扫描方法和扫描设备,该扫描方法通过识别待扫描对象的类型信息,对文件夹建立对应的待执行线程,而文件则直接提取待显示信息,并且直接继续当前线程在当前文件夹内的遍历操作,直至遍历完成后结束当前线程,通过应用本申请实施例所提出的技术方案,可以通过为扫描到的文件夹建立待执行线程的方式,将新扫描到的文件夹的进一步扫描通过其他线程另行处理,避免当前线程直接开始扫描所带来的单一线程处理时间的延长,保证单一线程的处理时间不会因为子文件夹的出现而延长,避免了由此引发的容错率降低,提高了存储文件的扫描效率。
Description
技术领域
本申请涉及数据存储领域,特别涉及一种存储文件的扫描方法和扫描设备。
背景技术
在电子计算机或相关设备中,一个“文件夹”就是一个装有数字文件系统的虚拟“容器”。在这样的“容器”里面保存着一组文件和其它一些文件夹。
一个典型的文件系统可能会包含成千上万个文件夹。多个文件通过存储在一个文件夹中,可以达到有组织的存储文件的目的。在一个当前文件夹中的另一个文件夹被称作这个当前文件夹的子文件夹。这样,这些文件夹就构成了层次(hierarchy),或树形结构,为数据信息的管理、检索、分类等处理提供了方便。
但是,随着存储设备容量的不断增大,待管理文件数量越来越大,分类越来越复杂,文件夹下的树形结构也越来越复杂。而为了调用和管理存储设备中所存储的文件,文件夹的树形结构(或者说文件夹信息)也变得越来越复杂。但为了数据的准确性,在获取这样的信息时,往往需要将当前所存储的全部文件进行一次扫描,才能确定当前最准确的文件夹信息,显示给用户,以使用户进行准确的文件查找或调用。
在需要将容量比较大或存储文件数量比较多的存储设备中的所有文件以及文件夹信息显示出来时,需要对全部的海量文件进行逐一扫描,因此,扫描耗时比较久。
申请人在实现本申请的过程中发现,上述现有的处理方案至少存在如下的问题:
现有的技术方案中,在扫描到当前文件夹下的子文件夹之后,需要将当前文件夹的扫描暂停,转而去进行子文件夹的扫描,只有在子文件夹扫描完成后,才会进行当前文件夹的继续扫描,因此,单一线程持续时间与全部文件的扫描耗时相一致,而长时间的单一线程操作,导致出错概率增加,而且,一旦出现错误导致当前线程崩溃,则在线程重启过程中需要将全部文件重新扫描,严重影响扫描容错率和处理效率。
发明内容
本申请实施例提供一种存储文件的扫描方法和扫描设备,以实现针对大量待扫描文件场景下,单一线程执行时间过长,影响容错率和处理效率的问题。
为了达到上述技术目的,本申请提供了一种存储文件的扫描方法,具体包括:
步骤A、启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象;
步骤B、依次识别所遍历到的当前待识别对象的类型信息,如果识别到的结果为文件夹,执行步骤C,如果识别到的结果为文件,则执行步骤D;
步骤C、为识别到的文件夹建立对应的待执行线程,对所述当前线程执行步骤E;
步骤D、将识别到的文件的待显示信息存储到缓存中,对所述当前线程执行步骤E;
步骤E、判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成,如果是,结束当前线程,如果不是,则执行F;
步骤F、继续遍历下一个待扫描对象,执行步骤B。
另外,本申请实施例还提供了一种扫描设备,具体包括:
扫描模块,用于启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象;
识别模块,用于依次识别所述扫描模块所遍历到的当前待识别对象的类型信息;
处理模块,用于在所述识别模块识别到的结果为文件夹时,为识别到的文件夹建立对应的待执行线程,或,在所述识别模块识别到的结果为文件时,将识别到的文件的待显示信息存储到缓存中;
判断模块,用在所述处理模块完成处理后,判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成,如果是,通知所述扫描模块结束当前线程,如果不是,通知所述扫描模块继续遍历下一个待扫描对象。
与现有技术相比,本申请实施例所提出的技术方案的有益技术效果包括:
本申请实施例公开了一种存储文件的扫描方法和扫描设备,该扫描方法通过识别待扫描对象的类型信息,对文件夹建立对应的待执行线程,而文件则直接提取待显示信息,并且直接继续当前线程在当前文件夹内的遍历操作,直至遍历完成后结束当前线程,通过应用本申请实施例所提出的技术方案,可以通过为扫描到的文件夹建立待执行线程的方式,将新扫描到的文件夹的进一步扫描通过其他线程另行处理,避免当前线程直接开始扫描所带来的单一线程处理时间的延长,保证单一线程的处理时间不会因为子文件夹的出现而延长,避免了由此引发的容错率降低,提高了存储文件的扫描效率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提出的一种存储文件的扫描方法的流程示意图;
图2为本申请实施例所提出的多线程场景下的存储文件的扫描方法的流程示意图;
图3为本申请实施例所提出的单线程场景下的存储文件的扫描方法的流程示意图;
图4为本申请实施例所提出的多线程场景下的存储文件的扫描方法的线程示意图;
图5为本申请实施例所提出的单线程场景下的存储文件的扫描方法的线程示意图;
图6为本申请实施例所提出的被动刷新和主动刷新相组合的场景下,扫描信息更新传输的流程示意图;
图7为本申请实施例所提出的一种扫描设备的结构示意图。
具体实施方式
正如本申请背景技术所陈述的,在面对大量待扫描数据时,现有技术方案采用单线程遍历操作,并且,在扫描到子文件夹时,当前文件夹的遍历过程需要暂停,转而要先对该子文件夹进行扫描,只有子文件夹扫描完成后,才会继续当前文件夹的遍历操作,因此,单一线程持续时间与全部文件的扫描耗时相一致,而长时间的单一线程操作,导致出错概率增加,容错率和处理效率都会降低。
本申请的发明人希望通过本申请实施例所提供的方法,可以另建新的线程来处理子文件夹的扫描过程,从而,不会因为子文件夹的扫描操作而对当前文件夹的扫描过程构成影响,避免了单线程进行海量文件扫描所引发的容错率降低,提高了存储文件的扫描效率。
如图1所示,为本申请实施例所提出的一种存储文件的扫描方法的流程示意图,该方法具体包括:
步骤S101、启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象。
需要说明的是,因为本申请实施例给出的是一个循环操作的处理流程,所以,本步骤所说的当前线程,并不一定是最高级的文件夹所对应的线程,也可能是其下的子文件夹,甚至更低级别的子文件夹所对应的线程。因为每个线程与其他线程都是独立的,其各自的操作过程彼此并无关联,因此,针对每一个线程的操作过程,相对应的线程即为当前线程。相应的,每个线程被启动后,也都会执行步骤S101。
在实际的应用场景中,对于最高一级的文件夹的扫描操作,是通过目录扫描指令来进行触发的,因此,在步骤S101之前,还包括以下操作:
接收到目录扫描指令,根据其中所携带的待扫描目录信息确定待扫描文件夹,为所述待扫描文件夹建立对应的线程,并对所述线程执行步骤S101。
需要进一步说明的是,本申请实施例所提出的技术方案中,被扫描的文件可能是存储不同类型的存储介质中,相应的,目录扫描指令的触发也会存在以下几种情况:
情况一、扫描本地文件。相应的目录扫描指令可以使用户通过触摸屏、按键或其它指定动作进行触发,相应的扫描单元获取到该指令后,开始对本地文件进行扫描,此过程中的指令传输和扫描操作都可以在设备内部完成。
情况二、扫描外接设备的文件。外接设备,是指与本地设备进行接触式连接(插槽、数据线等方式)的外接设备,例如:U盘、存储卡、移动硬盘等设备。被连接的本地设备触发相应的目录扫描指令,由本地扫描单元或者外接设备的扫描单元来进行扫描,此过程中的指令传输和扫描操作需要在本地设备和外接设备之间来完成。
情况三、扫描网络设备的文件。网络设备,是指与本地设备进行非接触式连接(蓝牙、wifi、互联网等方式)的网络设备,例如:网盘、网络服务器、远程控制的PC设备等设备。被连接的本地设备触发相应的目录扫描指令,传输给网络端,由网络端的扫描单元来进行扫描,并将扫描结果回传,此过程中的指令传输和扫描操作需要在本地设备和网络设备之间来完成。
在实际应用场景中,上述的各种情况都可以应用本申请实施例所提出的技术方案,甚至其他满足本申请主要技术思想的应用场景,也可以应用本申请实施例所提出的技术方案,应用场景的变化并不会影响本申请的保护范围。
步骤S102、依次识别所遍历到的当前待识别对象的类型信息。
本步骤中的类型信息只包括文件和文件夹两种,其中,文件是最终进行显示的存储信息列表中的根信息元,而文件夹则需要进一步扫描,已确定其所包括的文件,也就是说,文件夹只是最终进行显示的存储信息列表中的中间节点。
相应的,如果本步骤所识别到的结果为文件夹,则执行步骤S103,而如果识别到的结果为文件,则执行步骤S104。
步骤S103、为识别到的文件夹建立对应的待执行线程,对所述当前线程执行步骤S105。
本步骤的处理为对子文件夹进一步建立待执行线程,该线程独立于当前线程的处理之外,相当于对子文件夹进行了新线程操作的标记,而不会对当前线程的操作产生影响。因此,所建立的待执行线程将另行开始各自的处理,而当前的线程则直接继续进行步骤S105的处理即可。
在具体的应用场景中,对于所建立的待执行线程的后续处理,根据相应场景的变化,也会采用不同的处理过程,具体说明如下:
场景一、多线程场景,在当前场景下,对文件的扫描允许多线程并行处理。
相应的,步骤S103为识别到的文件夹建立对应的待执行线程,然后,一方面,对该待执行线程执行步骤S101,即开始该待执行线程的扫描处理,另一方面,则同时对当前线程执行步骤S105,从而,使新建立的线程独立于当前线程进行处理,不会对当前线程的处理产生影响。
需要说明的是,多线程场景下所并行执行的线程数量不仅限于两条线程,新建的线程在扫描过程中也可能会扫描到文件夹,当前线程在接下来的扫描过程中也可能会继续扫描到文件夹,相应的,也会再进一步建立新的线程,而新的线程也会另行进行各自的扫描操作,因此,并行的线程数可能会非常多。为了保证系统处理资源的占用率,可以限制最高的并行线程数,在达到最高的并行线程数之后,可以将之后再新建的线程暂停处理,在当前并行的线程中出现完结的线程,并空闲出相应的处理资源后,再按照一定的顺序(建立顺序、优先级数据、文件夹级别顺序等)激活相应的线程。从而,保证当前并行处理的线程数量不会过多而影响系统的正常运行。
场景二、单线程场景,在当前场景下,对文件的扫描只允许一条线程进行处理。
在单线程场景下,步骤S103建立待执行线程后,暂时并不触发该待执行线程的处理,而是继续执行当前线程的遍历操作,并在当前线程结束后,判断当前是否存在待执行线程。
如果判断结果为否,则表示所有的线程都已处理完毕,所有的文件也都已扫描完毕,可以执行后续的存储信息列表的更新显示过程,该过程在后续步骤中另行说明,在此不再赘述。
如果判断结果为是,选择一个待执行线程作为新的当前线程,执行步骤S101,如果存在多个待执行线程,可以按照一定的顺序(建立顺序、优先级数据、文件夹级别顺序等)激活相应的线程。
需要说明的是,对于单线程、多线程,以及多线程下是否设置最大并行线程数,可以根据实际场景需要进行调整,这样的变化并不会影响本申请的保护范围。
步骤S104、将识别到的文件的待显示信息存储到缓存中,对所述当前线程执行步骤S105。
文件是最终进行显示的存储信息列表中的根信息元,本步骤的处理表示完成了一个根信息元的获取,在该条支线上的信息获取过程完成,可以对下一个待扫描对象进行处理,即执行步骤S105。
步骤S105、判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成。
如果是,结束当前线程,如果不是,则执行S106。
本步骤的处理目的在于对当前线程的完结判断,从而,确定当前线程是否需要继续进行处理。当然,由于各线程的处理相互独立,本步骤的处理是对当前线程的终点确定过程,与其他线程的处理没有关联。
通过在每个线程中执行本步骤,可以逐一确定各线程是否结束,从而,确定文件扫描的进度,并且,对于前述的单线程场景,也是是否进行其他线程激活的判断。
步骤S106、继续遍历下一个待扫描对象,执行步骤S102。
至此,完成了对于一个待扫描对象的处理过程,循环上述操作,开始对下一个待扫描对象进行处理,直至步骤S105中判断不存在下一个扫描对象,从而结束当前线程的操作处理。
需要进一步说明的是,上述的技术方案完成了待显示信息的获取操作,那么,文件扫描的最终目的是要显示给用户进行浏览,因此,本申请实施例所提出的技术方案中还需要包括将缓存中的待显示信息,以存储信息列表的形式进行显示的操作,在具体的应用场景中,这样的现实可以包括两种模式:
模式一、在扫描过程中,显示部分扫描结果。
这个模式的目的在于避免用户长时间无进展的等待,或者在用户只需要部分信息的情况下,避免无谓的等待全部扫描结果所耗费的时间。
在实际应用中,相应的显示操作可以是通过被动刷新的方式来实现,例如,用户触发显示界面刷新指令,在接收到该指令后,将缓存中当前存储的所有待显示信息发送给显示界面,通过存储信息列表的形式显示给用户。
需要说明的是,为了进一步避免重复数据的传输,在前次传输过程中已经传输过的数据可以不再重复传输,而只是把新的待显示信息(连同其在存储信息列表中的位置信息)发送给显示界面,对以现实的存储信息列表进行更新。
模式二、在扫描全部结束后,显示全部结果。
因为扫描是在后台进行,用户并不能在第一时间确定扫描是否全部完成,因此,也就无法及时的进行全部接过的获取,因此,本申请实施例中进一步提出了主动更新的操作。
即,在通过步骤S105等操作确定当前所有线程都已经执行完毕时,将缓存中当前所存储的所有待显示信息发送给显示界面,对所述显示界面当前所显示的存储信息列表进行更新。
在这种模式下,发送给显示界面的信息是完整的全部待显示信息,也即可以生成完整的存储信息列表显示在显示界面上。
并且,这种全部扫描完成后的主动信息推送可以在第一时间告知用户完整的扫描信息,避免用户在扫描完成后由于不知道扫描进展而进行的无谓等待。
在实际应用中,上述的被动刷新和主动刷新可以单独应用,也可以共同应用在本申请实施例的技术方案中,达到用户可操作的更新控制和后台自动的更新反馈相结合的效果,实现最好的用户体验。
与现有技术相比,本申请实施例所提出的技术方案的有益技术效果包括:
本申请实施例公开了一种存储文件的扫描方法和扫描设备,该扫描方法通过识别待扫描对象的类型信息,对文件夹建立对应的待执行线程,而文件则直接提取待显示信息,并且直接继续当前线程在当前文件夹内的遍历操作,直至遍历完成后结束当前线程,通过应用本申请实施例所提出的技术方案,可以通过为扫描到的文件夹建立待执行线程的方式,将新扫描到的文件夹的进一步扫描通过其他线程另行处理,避免当前线程直接开始扫描所带来的单一线程处理时间的延长,保证单一线程的处理时间不会因为子文件夹的出现而延长,避免了由此引发的容错率降低,提高了存储文件的扫描效率。
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
如前所示,现有的存储文件扫描方法在扫描文件,包括文件夹下的文件时,需要对每层目录下的所有文件对象以及文件夹对象进行遍历。如果遍历到的对象是文件,则把文件对象的信息保存到缓存,继续遍历该层目录下的下一个对象。如果遍历到的对象是文件夹,则要进入到该文件夹目录下,对该文件夹下所有的对象进行遍历,重复上述过程,直到把所有的文件对象以及文件夹对象都遍历完毕。因此,如果需要扫描的文件和文件夹数量比较多,或者存储容量比较大,扫描过程比较耗时间。
而另一方面,现有的扫描技术要把扫描到的结果显示到界面中,需要等到扫描完成后才能显示,因为扫描过程比较耗时,所以显示过程需要用户等待较长的时间,影响用户体验。
为了克服现有技术的缺陷,本申请实施例所提出的一种具体应用场景下的存储文件的扫描方法,通过为扫描到的文件夹另行建立新的待执行线程来避免对当前线程的影响。
考虑到本申请分别为多线程场景和单线程场景提供了相应的解决方案,所以,本实施例分别针对两种应用场景进行具体实施方案的说明。
如图2所示,为本申请实施例所提出的多线程场景下的存储文件的扫描方法的流程示意图,该方法具体包括:
步骤S201、接收到目录扫描指令,确定当前线程。
根据目录扫描指令中所携带的待扫描目录信息确定待扫描文件夹,为该待扫描文件夹建立对应的线程,并确定该线程为当前线程。
如前所述,这里的目录扫描指令所对应的待扫描目录可能在本地,也可能在外接设备或网络设备上,目录所在位置的变化,并不会影响本申请的保护范围。
步骤S202、启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象。
步骤S203、识别所遍历到的当前待识别对象的类型信息。
如果本步骤所识别到的结果为文件夹,则执行步骤S204,而如果识别到的结果为文件,则执行步骤S205。
步骤S204、为识别到的文件夹建立对应的待执行线程。
具体的待执行线程的建立方式是,为所识别到的文件夹生成一个新的扫描路径,并为该扫描路径建立一个新的待执行线程。
由于是多线程并行的场景,所以,对于所建立的新的待执行线程和当前线程可以并行处理,不会相互影响。
因此,本步骤完成后,一方面,对新的待执行线程执行步骤S202,开始其自身作为当前线程的扫描处理,另一方面,继续当前线程的处理,对当前线程执行步骤S206。
需要说明的是,多线程场景下所并行执行的线程数量不仅限于两条线程,新建的线程在扫描过程中也可能会扫描到文件夹,当前线程在接下来的扫描过程中也可能会继续扫描到文件夹,相应的,也会再进一步建立新的线程,而新的线程也会另行进行各自的扫描操作,因此,并行的线程数可能会非常多。为了保证系统处理资源的占用率,可以限制最高的并行线程数,在达到最高的并行线程数之后,可以将之后再新建的线程暂停处理,在当前并行的线程中出现完结的线程,并空闲出相应的处理资源后,再按照一定的顺序(建立顺序、优先级数据、文件夹级别顺序等)激活相应的线程。从而,保证当前并行处理的线程数量不会过多而影响系统的正常运行。
步骤S205、将识别到的文件的待显示信息存储到缓存中。
本步骤完成后,继续当前线程的处理,对当前线程执行步骤S206。
步骤S206、判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成。
如果是,结束当前线程,如果不是,则执行S207。
步骤S207、继续遍历下一个待扫描对象,执行步骤S203。
本技术方案中的扫描采用多个线程同时扫描的方法,比使用一个线程扫描速度要快。对于含有大量的文件以及文件夹,文件夹中又包含多个子文件夹的场景,如果遇到文件夹则有一个新的线程去扫描,则会有多个线程同时扫描文件,扫描速度得以加快,相比于现有技术,在待扫描的文件量相同的情况下,可以有效的缩短扫描处理的时间,而且,即使某一个线程出现错误,重新启动该线程所带来的时延和处理量也会缩小很多。
如图3所示,为本申请实施例所提出的单线程场景下的存储文件的扫描方法的流程示意图,该方法具体包括:
步骤S301、接收到目录扫描指令,确定当前线程。
根据目录扫描指令中所携带的待扫描目录信息确定待扫描文件夹,为该待扫描文件夹建立对应的线程,并确定该线程为当前线程。
步骤S302、启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象。
步骤S303、识别所遍历到的当前待识别对象的类型信息。
如果本步骤所识别到的结果为文件夹,则执行步骤S304,而如果识别到的结果为文件,则执行步骤S305。
步骤S304、为识别到的文件夹建立对应的待执行线程。
具体的待执行线程的建立方式是,为所识别到的文件夹生成一个新的扫描路径,并为该扫描路径建立一个新的待执行线程。
由于是单线程并行的场景,而且当前线程仍在执行过程中,所以,对于所建立的新的待执行线程暂时不能进行激活,即暂时并不触发该待执行线程的处理,只能继续当前线程的处理,对当前线程执行步骤S306。
步骤S305、将识别到的文件的待显示信息存储到缓存中。
本步骤完成后,继续当前线程的处理,对当前线程执行步骤S306。
步骤S306、判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成。
如果是,结束当前线程,并执行步骤S308;
如果不是,则执行S307。
步骤S307、继续遍历下一个待扫描对象,执行步骤S303。
步骤S308、判断当前是否存在待执行线程。
如果判断结果为否,则表示所有的线程都已处理完毕,所有的文件也都已扫描完毕,结束当前操作。
如果判断结果为是,选择一个待执行线程作为新的当前线程,执行步骤S302,如果存在多个待执行线程,可以按照一定的顺序(建立顺序、优先级数据、文件夹级别顺序等)激活相应的线程。
本技术方案中的扫描仍然采用了单个线程扫描的方法,对于含有大量的文件以及文件夹,文件夹中又包含多个子文件夹的场景,如果遇到文件夹则建立一个新的待执行线程,但并不激活,而是继续当前线程的扫描,只会在当前线程完成之后,才会去逐一激活其他的待执行线程,相比于现有技术,在待扫描的文件量相同的情况下,虽然扫描处理的时间一致,但是,整体的扫描过程以文件夹为节点,被分割成了多个线程来完成,所以,即使某一个线程出现错误,重新启动该线程所带来的时延和处理量也会缩小很多,有效的提高了整体的容错率和处理效率。
进一步的,为了更加清楚的说明多线程和单线程场景下的具体实施方案,本申请实施例以线程示意图的方式对上述技术方案进行具体说明。
如图4所示,为本申请实施例所提出的多线程场景下的存储文件的扫描方法的线程示意图。
在当前线程thread启动后,逐一扫描当前文件夹下的各个待扫描对象,其中,对象1为文件1,所以直接将相应的信息放入缓存即可,继续扫描对象2,对象2为文件2,处理过程与对象1相一致,以此类推。
当扫描到对象m时,发现对象m为文件夹1,为文件夹1建立一个新的线程thread1,然后,继续通过线程thread对对象m之后的对象m+1进行扫描,同时,通过线程thread1对文件夹1中的各待扫描对象进行扫描。
对于线程thread接下来的扫描,与之前的扫描规则相一致,在图4中,线程thread在扫描到对象n时,发现对象n为文件夹2,所以,进一步为文件夹2建立了一个新的线程thread2,然后,继续通过线程thread对对象n之后的对象n+1进行扫描,直至扫描到对象x完成当前文件夹的扫描,同时,通过线程thread2对文件夹2中的各待扫描对象进行扫描,具体扫描规则与线程thread类似,在此不再重复叙述。
对于线程thread1的扫描过程,与线程thread类似,扫描到文件则直接将相应的信息放入缓存,而扫描到文件夹m1时,则进一步建立线程thread3,然后,继续通过线程thread1对对象m1之后的对象m1+1进行扫描,直至扫描到对象y完成文件夹1的扫描,同时,通过线程thread3对文件夹m1中的各待扫描对象进行扫描,具体扫描规则与线程thread类似,在此不再重复叙述。
通过图4可以看出,各条线程并行进行,彼此不会相互影响,各线程各自完成扫描后,各自进行结束,直至所有线程全部结束,则所有文件扫描完毕,整体的扫描时间只是由最晚结束的线程来决定,远远小于现有技术中单一线程进行全部文件扫描所需要的扫描时间。
如图5所示,为本申请实施例所提出的单线程场景下的存储文件的扫描方法的线程示意图。
在当前线程thread启动后,逐一扫描当前文件夹下的各个待扫描对象,其中,对象1为文件1,所以直接将相应的信息放入缓存即可,继续扫描对象2,对象2为文件2,处理过程与对象1相一致,以此类推。
当扫描到对象m时,发现对象m为文件夹1,为文件夹1建立一个新的线程thread1,然后,继续通过线程thread对对象m之后的对象m+1进行扫描。
对于线程thread接下来的扫描,与之前的扫描规则相一致,在图5中,线程thread在扫描到对象n时,发现对象n为文件夹2,所以,进一步为文件夹2建立了一个新的线程thread2,然后,继续通过线程thread对对象n之后的对象n+1进行扫描。
在线程thread完成全部的扫描后,识别到还有线程thread1和线程thread2没有进行处理,所以,按照建立的先后顺序,先进行线程thread1的处理,通过线程thread1对文件夹1中的各待扫描对象进行扫描。
对于线程thread1的扫描过程,与线程thread类似,扫描到文件则直接将相应的信息放入缓存,而扫描到文件夹m1时,则进一步建立线程thread3,然后,继续通过线程thread1对对象m1之后的对象m1+1进行扫描,具体扫描规则与线程thread类似,在此不再重复叙述。
在线程thread1完成全部的扫描后,识别到还有线程thread2和线程thread3没有进行处理,所以,按照建立的先后顺序,先进行线程thread2的处理,通过线程thread2对文件夹2中的各待扫描对象进行扫描,具体扫描规则与线程thread类似,在此不再重复叙述。
在线程thread2完成全部的扫描后,识别到还有线程thread3没有进行处理,所以,通过线程thread3对文件夹3中的各待扫描对象进行扫描,具体扫描规则与线程thread类似,在此不再重复叙述。
在线程thread3完成全部的扫描后,识别到已经没有未进行处理的线程,所以,扫描全部完成。
通过图5可以看出,各条线程串行进行,彼此不会相互影响,各线程完成扫描后,依次进行下一个线程的扫描,直至所有线程全部结束,则所有文件扫描完毕,整相比于现有技术,在待扫描的文件量相同的情况下,虽然扫描处理的时间一致,但是,整体的扫描过程以文件夹为节点,被分割成了多个线程来完成,所以,即使某一个线程出现错误,重新启动该线程所带来的时延和处理量也会缩小很多,有效的提高了整体的容错率和处理效率。
通过上述的说明,给出了相比现有技术具有更好的处理效果的扫描方案,并且适配了单线程场景和多线程场景。在实际应用中,文件扫描的最终目的是要显示给用户进行浏览,因此,本申请实施例所提出的技术方案中还需要包括将缓存中的待显示信息,以存储信息列表的形式进行显示的操作。
如前所述,本申请实施例提出了两种模式的信息显示方式,兼顾了基于用户刷新操作的被动刷新和在扫描完成后进行的主动刷新,并且,两种刷新方式可以分别实现,部署在技术方案中,也可以组合配置在同一个技术方案中,已实现更好的技术效果。
为了方便说明,本申请实施例以被动刷新和主动刷新相组合的场景为例,对相应的技术方案中进行信息显示更新的处理过程进行说明。如图6所示,为本申请实施例所提出的被动刷新和主动刷新相组合的场景下,扫描信息更新传输的流程示意图。
在扫描过程中,用户触发了显示界面刷新指令1、显示界面刷新指令2、……显示界面刷新指令n,对于每一次的显示界面刷新指令,都会分别通过反馈信息1、反馈信息2、……反馈信息n,将当前最新的扫描结果反馈给显示界面,从而,对显示界面中的显示结果进行更新,当然,由于扫描过程没有全部结束,这样的更新结果仍然只是部分的扫描结果,满足了用户了解扫描进度,或者获取部分信息的需求。
在扫描全部结束后,则主动通过上报信息将缓存中当前所存储的所有待显示信息发送给显示界面,对显示界面当前所显示的存储信息列表进行更新。在这种情况下,发送给显示界面的信息是完整的全部待显示信息,也即可以生成完整的存储信息列表显示在显示界面上。并且,这种全部扫描完成后的主动信息推送可以在第一时间告知用户完整的扫描信息,避免用户在扫描完成后由于不知道扫描进展而进行的无谓等待。
与现有技术相比,本申请实施例所提出的技术方案的有益技术效果包括:
本申请实施例公开了一种存储文件的扫描方法和扫描设备,该扫描方法通过识别待扫描对象的类型信息,对文件夹建立对应的待执行线程,而文件则直接提取待显示信息,并且直接继续当前线程在当前文件夹内的遍历操作,直至遍历完成后结束当前线程,通过应用本申请实施例所提出的技术方案,可以通过为扫描到的文件夹建立待执行线程的方式,将新扫描到的文件夹的进一步扫描通过其他线程另行处理,避免当前线程直接开始扫描所带来的单一线程处理时间的延长,保证单一线程的处理时间不会因为子文件夹的出现而延长,避免了由此引发的容错率降低,提高了存储文件的扫描效率。
为更清楚地说明本申请前述实施例提供的方案,基于与上述方法同样的发明构思,本申请实施例还提出了一种扫描设备,其结构示意图如图7所示,具体包括:
扫描模块71,用于启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象;
识别模块72,用于识别所述扫描模块71所遍历到的当前待识别对象的类型信息;
处理模块73,用于在所述识别模块72识别到的结果为文件夹时,为识别到的文件夹建立对应的待执行线程,或,在所述识别模块72识别到的结果为文件时,将识别到的文件的待显示信息存储到缓存中;
判断模块74,用在所述处理模块73完成处理后,判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成,如果是,通知所述扫描模块71结束当前线程,如果不是,通知所述扫描模块71继续遍历下一个待扫描对象。
优选的,在多线程场景下,所述处理模块73,还用于:
为识别到的文件夹建立对应的待执行线程之后,通知所述扫描模块71处理述待执行线程,并通知所述扫描模块71继续对所述当前线程进行处理。
优选的,在单线程场景下,
所述处理模块73,具体用于在为识别到的文件夹建立对应的待执行线程之后,通知所述扫描模块71继续对所述当前线程进行处理;
所述判断模块74,还用于在所述当前线程结束后,判断当前是否存在待执行线程,如果判断结果为是,选择一个待执行线程作为新的当前线程,并通知所述扫描模块71对所述信息的当前线程进行处理。
优选的,所述扫描设备,还包括:
接收模块75,用于接收目录扫描指令,并根据其中所携带的待扫描目录信息确定待扫描文件夹,通知所述处理模块73为所述待扫描文件夹建立对应的线程,并通知所述扫描模块71对所述线程进行处理。
优选的,所述扫描设备,还包括:
传输模块76,用于在接收到显示界面刷新指令,和/或判断当前所有线程都已经执行完毕时,将缓存中当前所存储的所有待显示信息发送给显示界面,对所述显示界面当前所显示的存储信息列表进行更新。
与现有技术相比,本申请实施例所提出的技术方案的有益技术效果包括:
本申请实施例公开了一种存储文件的扫描方法和扫描设备,该扫描方法通过识别待扫描对象的类型信息,对文件夹建立对应的待执行线程,而文件则直接提取待显示信息,并且直接继续当前线程在当前文件夹内的遍历操作,直至遍历完成后结束当前线程,通过应用本申请实施例所提出的技术方案,可以通过为扫描到的文件夹建立待执行线程的方式,将新扫描到的文件夹的进一步扫描通过其他线程另行处理,避免当前线程直接开始扫描所带来的单一线程处理时间的延长,保证单一线程的处理时间不会因为子文件夹的出现而延长,避免了由此引发的容错率降低,提高了存储文件的扫描效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络侧设备等)执行本发明实施例各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明实施例所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明实施例的几个具体实施场景,但是,本发明实施例并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明实施例的业务限制范围。
Claims (10)
1.一种存储文件的扫描方法,其特征在于,具体包括:
步骤A、启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象;
步骤B、依次识别所遍历到的当前待识别对象的类型信息,如果识别到的结果为文件夹,执行步骤C,如果识别到的结果为文件,则执行步骤D;
步骤C、为识别到的文件夹建立对应的待执行线程,对所述当前线程执行步骤E;
步骤D、将识别到的文件的待显示信息存储到缓存中,对所述当前线程执行步骤E;
步骤E、判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成,如果是,结束当前线程,如果不是,则执行F;
步骤F、继续遍历下一个待扫描对象,执行步骤B。
2.如权利要求1所述的方法,其特征在于,步骤C具体为:
为识别到的文件夹建立对应的待执行线程,对所述待执行线程执行步骤A,并对所述当前线程执行步骤E。
3.如权利要求1所述的方法,其特征在于,步骤C建立所述待执行线程后,继续执行所述当前线程的遍历操作,并在所述当前线程结束后,执行步骤G:
步骤G、判断当前是否存在待执行线程,如果判断结果为是,选择一个待执行线程作为新的当前线程,执行步骤A。
4.如权利要求1至3中任意一项所述的方法,其特征在于,步骤A之前,还包括:
接收到目录扫描指令,根据其中所携带的待扫描目录信息确定待扫描文件夹,为所述待扫描文件夹建立对应的线程,并对所述线程执行步骤A。
5.如权利要求1所述的方法,其特征在于,所述步骤D之后,还包括:
当接收到显示界面刷新指令,和/或判断当前所有线程都已经执行完毕时,执行步骤H;
步骤H、将缓存中当前所存储的所有待显示信息发送给显示界面,对所述显示界面当前所显示的存储信息列表进行更新。
6.一种扫描设备,其特征在于,具体包括:
扫描模块,用于启动当前线程,遍历当前线程所对应的文件夹下的所有待扫描对象;
识别模块,用于依次识别所述扫描模块所遍历到的当前待识别对象的类型信息;
处理模块,用于在所述识别模块识别到的结果为文件夹时,为识别到的文件夹建立对应的待执行线程,或,在所述识别模块识别到的结果为文件时,将识别到的文件的待显示信息存储到缓存中;
判断模块,用在所述处理模块完成处理后,判断所述当前线程所对应的文件夹下的所有待扫描文件是否全部遍历完成,如果是,通知所述扫描模块结束当前线程,如果不是,通知所述扫描模块继续遍历下一个待扫描对象。
7.如权利要求6所述的扫描设备,其特征在于,所述处理模块,还用于:
为识别到的文件夹建立对应的待执行线程之后,通知所述扫描模块处理述待执行线程,并通知所述扫描模块继续对所述当前线程进行处理。
8.如权利要求6所述的扫描设备,其特征在于,
所述处理模块,具体用于在为识别到的文件夹建立对应的待执行线程之后,通知所述扫描模块继续对所述当前线程进行处理;
所述判断模块,还用于在所述当前线程结束后,判断当前是否存在待执行线程,如果判断结果为是,选择一个待执行线程作为新的当前线程,并通知所述扫描模块对所述信息的当前线程进行处理。
9.如权利要求6所述的扫描设备,其特征在于,还包括:
接收模块,用于接收目录扫描指令,并根据其中所携带的待扫描目录信息确定待扫描文件夹,通知所述处理模块为所述待扫描文件夹建立对应的线程,并通知所述扫描模块对所述线程进行处理。
10.如权利要求6所述的扫描设备,其特征在于,还包括:
传输模块,用于在接收到显示界面刷新指令,和/或判断当前所有线程都已经执行完毕时,将缓存中当前所存储的所有待显示信息发送给显示界面,对所述显示界面当前所显示的存储信息列表进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610552537.8A CN106227751A (zh) | 2016-07-14 | 2016-07-14 | 一种存储文件的扫描方法和扫描设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610552537.8A CN106227751A (zh) | 2016-07-14 | 2016-07-14 | 一种存储文件的扫描方法和扫描设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106227751A true CN106227751A (zh) | 2016-12-14 |
Family
ID=57520663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610552537.8A Pending CN106227751A (zh) | 2016-07-14 | 2016-07-14 | 一种存储文件的扫描方法和扫描设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227751A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599252A (zh) * | 2016-12-20 | 2017-04-26 | 珠海市魅族科技有限公司 | 一种扫描存储设备的方法及装置 |
CN107301352A (zh) * | 2017-06-22 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种权限设置的方法及装置 |
CN108924002A (zh) * | 2018-06-27 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种性能数据文件的解析方法、装置及设备 |
CN109358822A (zh) * | 2018-09-26 | 2019-02-19 | 张捷 | 一种合同打印保证方法 |
CN110825700A (zh) * | 2019-11-07 | 2020-02-21 | 成都品果科技有限公司 | 一种高效扫描磁盘中文件的方法 |
CN112286878A (zh) * | 2019-07-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 文件扫描方法、装置、终端及存储介质 |
CN112954011A (zh) * | 2021-01-27 | 2021-06-11 | 上海淇玥信息技术有限公司 | 一种图像资源压缩方法、装置和电子设备 |
CN113836093A (zh) * | 2021-09-29 | 2021-12-24 | 深圳万兴软件有限公司 | 一种网盘文件清理方法、系统、计算机设备及其存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567341A (zh) * | 2010-12-09 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种实现软件内外目录同步的方法和系统 |
CN103019839A (zh) * | 2012-11-15 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种文件快速显示方法、装置及终端 |
CN103729418A (zh) * | 2013-12-18 | 2014-04-16 | 惠州华阳通用电子有限公司 | 一种车载平台媒体文件管理方法 |
CN105744343A (zh) * | 2016-01-26 | 2016-07-06 | 珠海迈科智能科技股份有限公司 | 一种快速扫描媒体文件的方法和机顶盒 |
-
2016
- 2016-07-14 CN CN201610552537.8A patent/CN106227751A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567341A (zh) * | 2010-12-09 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种实现软件内外目录同步的方法和系统 |
CN103019839A (zh) * | 2012-11-15 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种文件快速显示方法、装置及终端 |
CN103729418A (zh) * | 2013-12-18 | 2014-04-16 | 惠州华阳通用电子有限公司 | 一种车载平台媒体文件管理方法 |
CN105744343A (zh) * | 2016-01-26 | 2016-07-06 | 珠海迈科智能科技股份有限公司 | 一种快速扫描媒体文件的方法和机顶盒 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599252A (zh) * | 2016-12-20 | 2017-04-26 | 珠海市魅族科技有限公司 | 一种扫描存储设备的方法及装置 |
CN107301352A (zh) * | 2017-06-22 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种权限设置的方法及装置 |
CN108924002A (zh) * | 2018-06-27 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种性能数据文件的解析方法、装置及设备 |
CN108924002B (zh) * | 2018-06-27 | 2021-10-15 | 郑州云海信息技术有限公司 | 一种性能数据文件的解析方法、装置、设备及存储介质 |
CN109358822A (zh) * | 2018-09-26 | 2019-02-19 | 张捷 | 一种合同打印保证方法 |
CN112286878A (zh) * | 2019-07-24 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 文件扫描方法、装置、终端及存储介质 |
CN110825700A (zh) * | 2019-11-07 | 2020-02-21 | 成都品果科技有限公司 | 一种高效扫描磁盘中文件的方法 |
CN112954011A (zh) * | 2021-01-27 | 2021-06-11 | 上海淇玥信息技术有限公司 | 一种图像资源压缩方法、装置和电子设备 |
CN112954011B (zh) * | 2021-01-27 | 2023-11-10 | 上海淇玥信息技术有限公司 | 一种图像资源压缩方法、装置和电子设备 |
CN113836093A (zh) * | 2021-09-29 | 2021-12-24 | 深圳万兴软件有限公司 | 一种网盘文件清理方法、系统、计算机设备及其存储介质 |
CN113836093B (zh) * | 2021-09-29 | 2024-04-12 | 深圳万兴软件有限公司 | 一种网盘文件清理方法、系统、计算机设备及其存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227751A (zh) | 一种存储文件的扫描方法和扫描设备 | |
CN104461744B (zh) | 一种资源分配方法及装置 | |
US9619275B2 (en) | Data processing method, apparatus and mobile terminal | |
CN105515872B (zh) | 配置信息的更新方法、装置及系统 | |
CN103777947B (zh) | 一种移动终端主界面的管理方法和装置 | |
CN104423982B (zh) | 请求的处理方法和处理设备 | |
CN105225212A (zh) | 一种图片处理方法和装置 | |
CN110636366A (zh) | 视频的播放处理方法、装置、电子设备和介质 | |
CN110910237B (zh) | 区块链中的数据处理方法、装置及智能终端、存储介质 | |
CN106354378B (zh) | 一种快速选中多个目标的方法和装置 | |
CN107357630A (zh) | 一种实现虚拟机同步的方法、装置和存储介质 | |
US9424001B2 (en) | Partial updating of diagram display | |
US20230004673A1 (en) | Information management system and method for communication application, and display terminal | |
CN105546724A (zh) | 语音控制方法及系统、客户端、控制装置 | |
CN109697129A (zh) | 一种信息分享方法、设备及计算机可读存储介质 | |
CN105554290A (zh) | 一种壁纸的分享方法及装置 | |
CN104537049A (zh) | 一种图片浏览方法及装置 | |
US11429660B2 (en) | Photo processing method, device and computer equipment | |
CN106201779A (zh) | 图片处理方法、装置及移动终端 | |
CN108093249A (zh) | 一种图像处理方法及装置 | |
CN111309221B (zh) | 页面处理方法、装置及设备 | |
CN106911969B (zh) | 一种焦点搜索方法、装置及电子设备 | |
CN115830776A (zh) | 一种基于共享储物柜存取件的方法、装置及电子设备 | |
CN105488489A (zh) | 一种短视频消息的发送方法、电子设备及系统 | |
CN106487862A (zh) | 基于指纹识别信息的转移交互系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161214 |