一种文件读取方法及装置与流程

文档序号:12748083阅读:115来源:国知局
一种文件读取方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种文件读取方法及装置。



背景技术:

数据库是按照数据结构来组织、存储和管理数据的仓库,数据库对数据的查询、处理速度远远超过普通文件的处理速度。随着移动互联网业务和用户数量的快速增长,传统的入库机制已经很难满足入库管理的需求,因此,采用多线程处理数据的方法应运而生。



技术实现要素:

本发明实施例提供一种文件读取方法及装置,用于提高文件读取的效率。

一种文件读取方法,应用于并行的多线程中,包括以下步骤:

从预设队列中获取待处理文件的文件名称;

根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据;

当所述读取的数据满足预设条件时,停止读取所述待处理文件,并将所述读取的数据写入数据库。

在一个实施例中,所述预设条件为所述读取的数据的数据量达到预设阈值;

相应地,所述将所述读取的数据写入数据库之后,所述方法还包括:

继续读取所述待处理文件中未被处理的数据。

在一个实施例中,所述预设条件为所述待处理文件中的数据已被全部读取;

相应地,所述将所述读取的数据写入数据库之后,所述方法还包括:

继续从所述预设队列中获取下一个待处理文件的文件名称。

在一个实施例中,所述根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据之前,所述方法还包括:

获取与当前线程相对应的预设表达式;

将所述文件名称的参数与所述预设表达式相匹配,并根据所述匹配结果判断所述待存储文件是否可读,所述参数包括所述文件名称的格式;

相应地,所述根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据,包括:

当判定所述待存储文件可读时,根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据。

在一个实施例中,所述获取与当前线程相对应的预设表达式,包括:

确定所述预设表达式的数量;

当所述预设表达式的数量唯一时,将所述唯一的预设表达式确定为与当前线程相对应的预设表达式;

当所述预设表达式的数量与所述并行的多线程数量相同时,根据预设的各线程与预设表达式的对应关系确定与当前线程相对应的预设表达式。

一种文件读取装置,应用于并行的多线程中,包括:

第一获取模块,用于从预设队列中获取待处理文件的文件名称;

第一读取模块,用于根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据;

写入模块,用于当所述读取的数据满足预设条件时,停止读取所述待处理文件,并将所述读取的数据写入数据库。

在一个实施例中,所述预设条件为所述读取的数据的数据量达到预设阈值;所述装置还包括:

第二读取模块,用于将所述读取的数据写入数据库之后,继续读取所述待处理文件中未被处理的数据。

在一个实施例中,所述预设条件为所述待处理文件中的数据已被全部读取;所述装置还包括:

第二获取模块,用于继续从所述预设队列中获取下一个待处理文件的文件名称。

在一个实施例中,所述装置还包括:

第三获取模块,用于根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据之前,获取与当前线程相对应的预设表达式;

判断模块,用于将所述文件名称的参数与所述预设表达式相匹配,并根据所述匹配结果判断所述待存储文件是否可读,所述参数包括所述文件名称的格式;

相应地,所述第一读取模块,用于当判定所述待存储文件可读时,根据所述待处理文件的文件名称读取并处理所述待处理文件中的数据。

在一个实施例中,所述第三获取模块包括:

第一确定单元,用于确定所述预设表达式的数量;

第二确定单元,用于当所述预设表达式的数量唯一时,将所述唯一的预设表达式确定为与当前线程相对应的预设表达式;

第三确定单元,用于当所述预设表达式的数量与所述并行的多线程数量相同时,根据预设的各线程与预设表达式的对应关系确定与当前线程相对应的预设表达式。

本发明实施例的一些有益效果可以包括:

采用本发明实施例提供的技术方案,能够主动从预设队列中获取待处理文件的文件名称,并根据待处理文件的文件名称读取并处理待处理文件中的数据,使得在读取待处理文件时,能够快速获取到待处理文件的文件名称,从而提高读取待处理文件的效率,并且,该技术方案能够在读取的数据满足预设条件时停止读取待处理文件,并将读取的数据写入数据库中,使得并行的多线程都能够边读取边写入,而并非将所有的数据都读取完成后再写入数据库中,因此在很大程度上提高了数据写入的效率,节省计算机处理数据的时间。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中一种文件读取的方法的流程图;

图2为本发明实施例中另一种文件读取的方法的流程图;

图3为本发明实施例中一种文件读取的装置的框图;

图4为本发明实施例中另一种文件读取的装置的框图;

图5为本发明实施例中一种文件读取的装置中第三获取模块的框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1为本发明实施例中一种文件读取的方法的流程图。如图1所示,该方法应用于并行的多线程中,包括以下步骤S11-S13:

步骤S11,从预设队列中获取待处理文件的文件名称。

其中,预设队列用于存储所有待处理文件的文件名称。在该实施例中,由预先创建的主线程从文件目录中寻找需要处理的文件,并将需要处理的文件的文件名称写入预设队列中,并行的多线程的数量可预先配置好,例如,配置文件中设置多线程数量为9,则启动程序后,主线程就会创建9个子线程,每条子线程主动从预设队列中获取待处理文件的文件名称。

步骤S12,根据待处理文件的文件名称读取并处理待处理文件中的数据。

步骤S13,当读取的数据满足预设条件时,停止读取待处理文件,并将读取的数据写入数据库。

在一个实施例中,预设条件为读取的数据的数据量达到预设阈值。例如,预设阈值为5000,则当当前线程从待处理文件中读取的数据的数据量达到5000条时,则停止读取该待处理文件,并将读取的这5000条数据写入数据库中。然后执行以下步骤:继续读取待处理文件中未被处理的数据。在继续读取时,仍在读取到的数据达到5000条时停止读取该待处理文件。

在一个实施例中,预设条件为待处理文件中的数据已被全部读取。例如,当前线程所读取的待处理文件中的数据量较少,则当前线程可直接读取完该待处理文件中的所有数据,并写入数据库中。然后执行以下步骤:继续从预设队列中获取下一个待处理文件的文件名称。当预设队列中已无待处理文件的文件名称时,当前线程任务结束。

在一个实施例中,上述两种预设条件还可结合使用。举例而言,预设阈值为5000,待处理文件中的数据量共有8000条,当当前线程从待处理文件中读取的数据的数据量达到5000条时,则停止读取该待处理文件,并将读取的这5000条数据写入数据库中,然后,继续读取待处理文件中剩余的3000条数据,由于这3000条数据少于预设阈值,且该待处理文件已被读取完成,因此当前线程停止读取数据的操作,并将读取的这3000条数据写入数据库中,然后再从预设队列中获取下一个待处理文件的文件名称,当预设队列中已无待处理文件的文件名称时,当前线程任务结束。

在一个实施例中,执行步骤S12之前,上述方法还包括以下步骤:获取与当前线程相对应的预设表达式;将文件名称的参数与预设表达式相匹配,并根据匹配结果判断待存储文件是否可读,其中,参数包括文件名称的格式。相应地,步骤S12可执行为以下步骤:当判定待存储文件可读时,根据待处理文件的文件名称读取并处理待处理文件中的数据。

其中,获取与当前线程相对应的预设表达式时,首先确定配置文件中预设表达式的数量,根据配置文件中预设表达式的数量不同分为以下两种情况:情况一、配置文件中预设表达式的数量唯一,说明多条线程共用一个预设表达式,此时可将该唯一的预设表达式确定为与当前线程相对应的预设表达式。情况二、配置文件中预设表达式的数量与所述并行的多线程数量相同,说明各线程对应各自的预设表达式,此时可根据预设的各线程与预设表达式的对应关系确定与当前线程相对应的预设表达式。

在一个实施例中,当所有的待处理文件都被处理完成、且并行的各线程的任务都结束后,主线程会再次从文件目录中查找需要处理的文件,当查找到有需要处理的文件时,继续将文件名称写入预设队列,同时创建多线程来处理文件。

图2为本发明实施例中一种文件读取的方法的流程图。如图2所示,该方法应用于并行的多线程中,包括以下步骤S21-S26:

步骤S21,从预设队列中获取待处理文件的文件名称。

步骤S22,根据待处理文件的文件名称读取并处理待处理文件中的数据。

步骤S23,判断所读取的数据的数据量是否达到预设阈值;当所读取的数据的数据量达到预设阈值时,则执行步骤S24;否则,返回步骤S22继续读取并处理待处理文件中的数据;

步骤S24,将读取的数据写入数据库。

步骤S25,继续读取待处理文件中的数据。然后返回步骤S23,直至当前待处理文件中的数据已被全部读取。

步骤S26,判断待处理文件中的数据是否已被全部读取。如果待处理文件中的数据已被全部读取,则返回步骤S21,从预设队列中获取下一个待处理文件的文件名称;否则,返回步骤S25。

上述任一实施例所提供的文件读取方法至少具有以下有益效果:

采用本发明实施例提供的技术方案,能够主动从预设队列中获取待处理文件的文件名称,并根据待处理文件的文件名称读取并处理待处理文件中的数据,使得在读取待处理文件时,能够快速获取到待处理文件的文件名称,从而提高读取待处理文件的效率,并且,该技术方案能够在读取的数据满足预设条件时停止读取待处理文件,并将读取的数据写入数据库中,使得并行的多线程都能够边读取边写入,而并非将所有的数据都读取完成后再写入数据库中,因此在很大程度上提高了数据写入的效率,节省计算机处理数据的时间。

图3为本发明实施例中一种文件读取的装置的框图。如图3所示,该装置应用于并行的多线程中,包括:

第一获取模块31,用于从预设队列中获取待处理文件的文件名称;

第一读取模块32,用于根据待处理文件的文件名称读取并处理待处理文件中的数据;

写入模块33,用于当读取的数据满足预设条件时,停止读取待处理文件,并将读取的数据写入数据库。

在一个实施例中,预设条件为读取的数据的数据量达到预设阈值;装置还包括:

第二读取模块,用于将读取的数据写入数据库之后,继续读取待处理文件中未被处理的数据。

在一个实施例中,预设条件为待处理文件中的数据已被全部读取;装置还包括:

第二获取模块,用于继续从预设队列中获取下一个待处理文件的文件名称。

在一个实施例中,如图4所示,上述装置还包括:

第三获取模块34,用于根据待处理文件的文件名称读取并处理待处理文件中的数据之前,获取与当前线程相对应的预设表达式;

判断模块35,用于将文件名称的参数与预设表达式相匹配,并根据匹配结果判断待存储文件是否可读,参数包括文件名称的格式;

相应地,第一读取模块32,用于当判定待存储文件可读时,根据待处理文件的文件名称读取并处理待处理文件中的数据。

在一个实施例中,如图5所示,第三获取模块34包括:

第一确定单元341,用于确定预设表达式的数量;

第二确定单元342,用于当预设表达式的数量唯一时,将唯一的预设表达式确定为与当前线程相对应的预设表达式;

第三确定单元343,用于当预设表达式的数量与并行的多线程数量相同时,根据预设的各线程与预设表达式的对应关系确定与当前线程相对应的预设表达式。

采用本发明实施例提供的装置,能够主动从预设队列中获取待处理文件的文件名称,并根据待处理文件的文件名称读取并处理待处理文件中的数据,使得在读取待处理文件时,能够快速获取到待处理文件的文件名称,从而提高读取待处理文件的效率,并且,该技术方案能够在读取的数据满足预设条件时停止读取待处理文件,并将读取的数据写入数据库中,使得并行的多线程都能够边读取边写入,而并非将所有的数据都读取完成后再写入数据库中,因此在很大程度上提高了数据写入的效率,节省计算机处理数据的时间。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1