CN111723052B - 一种大文件数据的编辑方法及装置 - Google Patents
一种大文件数据的编辑方法及装置 Download PDFInfo
- Publication number
- CN111723052B CN111723052B CN202010389934.4A CN202010389934A CN111723052B CN 111723052 B CN111723052 B CN 111723052B CN 202010389934 A CN202010389934 A CN 202010389934A CN 111723052 B CN111723052 B CN 111723052B
- Authority
- CN
- China
- Prior art keywords
- line
- text
- screen
- text content
- topn
- 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
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
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/106—Display of layout of documents; Previewing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- User Interface Of Digital Computer (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种大文件数据的编辑方法及装置,所述方法包括:通过文本编辑器将目标文件打开,以预设数值大小为单位逐段载入内存中,在载入过程中为每行文本内容建立行映射;统计目标文件的总行数N,预先插入N个换行符;将目标文件的第一个预设数值单位的文本内容载入至缓存,根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;在实时监测当前文本编辑器的屏幕发生滚动后,获取滚动后的屏幕顶端行号TOPN,并在判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中后,从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户进行编辑处理。本发明能够在不改变原编辑器框架的前提下提供对大文件的编辑支持。
Description
技术领域
本发明涉及文件数据处理技术领域,尤其是涉及一种大文件数据的编辑方法及装置。
背景技术
文件存储和文件编辑是用户工作中所必不可少的一项任务,文件编辑主要包括文件合并、文件删除、数据插入和数据剔除。目前市面上很多编辑器都是内存载入型编辑器(最常见的为Notepad++),此类编辑器将文件内容全部载入内存,然后进行操作,以求达到编辑速度的最大化。
但是,在对现有技术的研究与实践过程中,本发明的发明人发现,内存载入型编辑器有一个很明显的缺陷,就是能够支持打开的文件大小取决于PC内存。以32位系统为例,进程能够申请到的最大用户空间内存约为1G(扣除内核以及框架占用等),因此此类编辑能够支持编辑的文件大小通常也在1G以下,无法支持大文件的编辑需求(以Notepad++为例,大约只能支持500M的文件编辑)。因此,亟需一种能够在不改变原编辑器框架的前提下提供对大文件的编辑方法。
发明内容
本发明实施例所要解决的技术问题在于,提供一种大文件数据的编辑方法及装置,能够在不改变原编辑器框架的前提下提供对大文件的编辑支持。
为解决上述问题,本发明的一个实施例提供一种大文件数据的编辑方法,至少包括如下步骤:
通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;
统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;
通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;
实时监测当前文本编辑器的屏幕是否发生滚动;
若是,则获取滚动后的屏幕的顶端行号TOPN,并判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;
若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
进一步地,所述实时监测当前文本编辑器的屏幕是否发生滚动,还包括:
若当前文本编辑器的屏幕没有发生滚动时,监测用户对当前屏幕显示的文本内容的操作信息,并记录所述操作信息及其对应的文本内容所在行的关系。
进一步地,所述大文件数据的编辑方法,还包括:
若判断TOPN+SN行的文本内容不全在已载入的预设的数值单位的缓存中,则在所述行映射数组中匹配TOPN行文本内容对应的文件位置;
在该文件位置前后各载入所述预设数值单位的一半的文本内容至缓存;
从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
进一步地,所述大文件数据的编辑方法,还包括:
当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
进一步地,所述大文件数据的编辑方法,还包括:
检测所述目标文件的编码格式;
若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中。
进一步地,所述预设数值单位为50M。
本发明的一个实施例提供了一种大文件数据的编辑装置,包括:
行映射模块,用于通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;
文本内容填充模块,用于统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;
屏幕滚动检测模块,用于实时监测当前文本编辑器的屏幕是否发生滚动;
文本内容更新模块,用于在获取滚动后的屏幕的顶端行号TOPN后,判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中时,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
进一步地,所述大文件数据的编辑装置,还包括:
统一编码模块,用于检测所述目标文件的编码格式;若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中;
操作复原模块,用于当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
本发明的一个实施例还提供了一种大文件数据的编辑的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的大文件数据的编辑方法。
本发明的一个实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的大文件数据的编辑方法。
本发明实施例提供的一种大文件数据的编辑方法及装置,所述方法包括:通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;实时监测当前文本编辑器的屏幕是否发生滚动;若是,则获取滚动后的屏幕的顶端行号TOPN,并判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
与现有技术相比,本发明能够在不改变原编辑器框架的前提下提供对大文件的编辑支持。在实际编辑过程中,通过先载入空行,然后在需要进行内容显示时进行实时载入,只需占用很少内存资源,能够满足大文件的编辑需求。每次只读入50M的缓存,如果待显示的行在缓存中,则优先从缓存读取,加速局部刷新的速度,同时维持了原编辑器中部分行操作属性,能够使得用户追溯历史操作记录。
附图说明
图1为本发明第一实施例提供的一种大文件数据的编辑方法的流程示意图;
图2为本发明第一实施例提供的行映射数组的示意图;
图3为本发明第一实施例提供的另一种大文件数据的编辑方法的流程示意图;
图4为本发明第二实施例提供的一种大文件数据的编辑装置的结构示意图;
图5为本发明第二实施例提供的另一种大文件数据的编辑装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
首先介绍本发明可以提供的应用场景,如对大文件进行编辑处理。
本发明第一实施例:
请参阅图1-3。
如图1所示,本实施例提供了一种大文件数据的编辑方法,至少包括如下步骤:
S101、通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组。
具体的,对于步骤S101,首先用户通过文本编辑器在选择所需要打开的目标文件后打开该文件,文本编辑器以50M为单位,将该目标文件逐段载入内存,由于各操作系统或者语言都提供了标准的文件读取接口。比如读取了50M后,那么文件指针会自动偏移到50M的位置,那么下次读取的就是接下来的50M,循环读取便可以获取整个文件的内容,实现逐段载入内存的效果。
同时,在文件载入内存过程中,为目标文件的每行文本建立行映射,即记录每行文本在文件中的起始位置,并得到对应的Line Map(行映射数组)。
在具体的实施例中,如图2所示,查找到一个换行符之后,便可以为此行建立行映射。其中计算方式为:行映射(该行在文件中的起始位置)=此换行符之前读取到的字符总数。
举个例子:第一行的字符个数为128,第二行的字符个数为254。那么行映射为:
A[0]=0(第一行的起始位置为0);
A[1]=128(第二行的起始位置为128);
A[2]=128+254(第三行的起始位置为382);
……
A[N]=A[0]+A[1]+A[2]+……+A[N-1](第N行的起始位置为AN)。
通过行映射数组记录了此行在文件中的起始位置。如果需要对范围内的行进行内容载入,通过数组下标就能够快速找到,提高文件编辑的效率。
S102、统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符。
具体的,对于步骤S102,读取文件中的一个段(比如50M)后,查找此段中的换行符个数,便可以统计出单次读取的行数。将所有段的行数相加,便可以统计出文件的总行数N,从而往所述文本编辑器中预先插入N个换行符。通过先载入空行,然后在需要进行内容显示时进行实时载入,在占用内存很小的前提下,能够满足大文件的编辑需求。
S103、通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容。
具体的,对于步骤S103,屏幕大小以行为数值单位进行衡量,即编辑器的单屏能容纳的最大行数为SN,载入文件前50M内容至缓存中,根据屏幕的大小SN,填充单屏内容。
其中,通用编辑器都支持行号显示,举个例说明,若顶行为1,屏幕能够容纳的行数为20,即TOPN=1,SN=20。一般来说编辑器都会提供字符替换接口。比如用户可以使用Notepad++选中一部分内容,然后按Ctrl+V将剪切版中的内容替换掉当前选中的内容。那么屏幕填充也是一样的道理,根据行映射获取当前屏的内容,替换掉屏幕上的空行显示,即可完成屏幕填充。
举个例子比如TOPN(顶行)=5,SN(屏幕大小)=5,需要填充5~10行的屏幕。则具体填充过程为:首先获取第5、11行的行映射(即第五行的开始位置,以及第10行的结束位置,假设分别为128,511)。接着从第128个字节起,取511-128个字符,替换掉5-10行中的5个空行即可完成当前屏幕填充,由于本发明是基于已有编辑器实现大文件支持,因此有些功能实现会基于编辑器的通用功能。
S104、实时监测当前文本编辑器的屏幕是否发生滚动。
具体的,对于步骤S104,各操作系统都会提供界面相关的消息通告。以Windows为例,拉动垂直滚动条时系统会通告WM_VSCROLL消息,捕获此类消息(类似的还有鼠标滚轮消息),便能够实时监测当前文本编辑器的屏幕是否在滚动。
S105、若是,则获取滚动后的屏幕的顶端行号TOPN,并判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中。
具体的,对于步骤S105,获取滚动后的屏幕的顶端行号TOPN,判断TOPN+SN行的文本内容是否在载入的50M缓存中。
S106、若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
具体的,对于步骤S106,若判断TOPN+SN行的文本内容全部都在载入的50M缓存中,则从顶行开始,从缓存中载入TOPN+SN行的文本内容至文本编辑器的屏幕,直至填充满屏幕,以使用户开始文本编辑操作。
在优选的实施例中,所述实时监测当前文本编辑器的屏幕是否发生滚动,还包括:
若当前文本编辑器的屏幕没有发生滚动时,监测用户对当前屏幕显示的文本内容的操作信息,并记录所述操作信息及其对应的文本内容所在行的关系。
具体的,对于步骤S104,还包括,若当前文本编辑器的文本没有在滚动,则表示用户在对当前屏幕的文本内容进行编辑操作,如高亮等,记录用户对当前屏幕的文本内容的编辑操作记录,记录编辑操作和文本行的关系。
在优选的实施例中,所述大文件数据的编辑方法,还包括:
若判断TOPN+SN行的文本内容不全在已载入的预设的数值单位的缓存中,则在所述行映射数组中匹配TOPN行文本内容对应的文件位置;
在该文件位置前后各载入所述预设数值单位的一半的文本内容至缓存;
从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
具体的,当判断TOPN+SN行的文本内容不全在已载入的预设的数值单位的缓存中时,在行映射数组中找到TOPN行对应的文件位置,并在此文件位置前后各载入25M的文本内容至缓存中,再从当前文本编辑器的屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容至屏幕,直至填充满当前屏幕为止,以使用户继续对文本进行编辑处理。
在优选的实施例中,所述大文件数据的编辑方法,还包括:
当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
具体的,当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,用户开始进行编辑时,本实施例还对当前屏幕的文本内容进行判断,判断当前行是否有记录的操作,若有,则将该行的属性或者操作复原,复原之后可继续进行执行其它的编辑操作。
在优选的实施例中,所述大文件数据的编辑方法,还包括:
检测所述目标文件的编码格式;
若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中。
具体的,本方案在打开目标文件之前,还对目标文件进行编码格式的探测,若目标文件中存在多种编码格式,则需要对目标问价进行统一转码处理,保证编辑器和磁盘文件中的格式一致,即保证文件和编辑器中的位置能够一一对应。
在优选的实施例中,所述预设数值单位为50M。
具体的,本实施例以50M为单位进行载入(包括每次缓存到内存中的文件大小也为50M)。此值是可配的,能够根据实际情形进行修改,50M是一个内存和效率的综合考量值。如果小于50M,则文件编辑时读取磁盘的次数会变多,影响效率。如果大于50M,则此编辑器内存占用会较大,影响电脑中其他程序的使用。
如图3所示,本实施例还提供了另一种大文件数据的编辑方法,具体包括如下步骤:打开文件,以50M为单位,将文件逐段载入内存,载入过程中为每行建立行映射,得到行映射数组;根据文件的总行数N,往编辑器中插入N个换行符;载入文件前50M内容到内存,根据屏幕的大小SN,填充单凭内容;判断编辑器是否在滚动,若否,则对当前屏幕内容进行操作,并记录操作和行的关系;若是,则获取滚动后的屏幕顶端行数TOPN。判断TOPN+SN行的内容是否在载入的50M缓存中,若否,则在行映射数组中找到TOPN对应的文件位置,并在此前后各载入25M到内存,再从顶行开始,从内存中载入TOPN+SN行的内容,填充满屏幕;若是,则直接从屏幕顶行开始,从内存中载入TOPN+SN行的内容填充满屏幕;判断当前行是否有记录的操作,将行的属性或者操作复原,复原之后可继续进行执行其它的编辑操作。
本实施例提供的一种大文件数据的编辑方法,包括:通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;实时监测当前文本编辑器的屏幕是否发生滚动;若是,则获取滚动后的屏幕的顶端行号TOPN,并判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
与现有技术相比,本实施例具有以下优点:
1、能够在不改变原编辑器框架的前提下提供对大文件的编辑支持。一般来说,日志或则文件的单行平均长度约为128个字符。而此方案只需要使用一个换行符来代替此行,并在实际需要显示的时候进行载入。能够支持编辑的大小是原来的128倍。以NotePad++为例,在32位系统上能支持500M的文件编辑,那么采用此方案,能够支持编辑的大小为128*0.5=64G。
2、维持了原编辑器中部分行操作属性,比如行标记等等。因为这些都是边界标记,滚动的时候不需要记录和还原(也就是只需要对文本相关操作进行记录和复原即可)。
3、每次读入50M的缓存,如果待显示的行在缓存中,则优先从缓存取。对于局部刷新有加速作用。
本发明第二实施例:
请参阅图4-5。
如图4所示,本实施例提供了一种大文件数据的编辑装置,包括:
行映射模块100,用于通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组。
具体的,对于行映射模块100,首先用户通过文本编辑器在选择所需要打开的目标文件后打开该文件,文本编辑器以50M为单位,将该目标文件逐段载入内存,同时,在文件载入内存过程中,为目标文件的每行文本建立行映射,即记录每行文本在文件中的起始位置,并得到对应的Line Map(行映射数组)。
文本内容填充模块200,用于统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容。
具体的,对于文本内容填充模块200,读取文件中的一个段(比如50M)后,查找此段中的换行符个数,便可以统计出单次读取的行数。将所有段的行数相加,便可以统计出文件的总行数N,从而往所述文本编辑器中预先插入N个换行符。屏幕大小以行为数值单位进行衡量,即编辑器的单屏能容纳的最大行数为SN,载入文件前50M内容至缓存中,根据屏幕的大小SN,填充单屏内容。通过先载入空行,然后在需要进行内容显示时进行实时载入,在占用内存很小的前提下,能够满足大文件的编辑需求。
屏幕滚动检测模块300,用于实时监测当前文本编辑器的屏幕是否发生滚动;
具体的,对于屏幕滚动检测模块300,各操作系统都会提供界面相关的消息通告。以Windows为例,拉动垂直滚动条时系统会通告WM_VSCROLL消息,捕获此类消息(类似的还有鼠标滚轮消息),便能够实时监测当前文本编辑器的屏幕是否在滚动。
文本内容更新模块400,用于在获取滚动后的屏幕的顶端行号TOPN后,判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中时,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
具体的,对于文本内容更新模块400,获取滚动后的屏幕的顶端行号TOPN,判断TOPN+SN行的文本内容是否在载入的50M缓存中,若判断TOPN+SN行的文本内容全部都在载入的50M缓存中,则从顶行开始,从缓存中载入TOPN+SN行的文本内容至文本编辑器的屏幕,直至填充满屏幕,以使用户开始文本编辑操作。
如图5所示,在优选的实施例中,所述大文件数据的编辑装置,还包括:
统一编码模块,用于检测所述目标文件的编码格式;若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中;
具体的,对于统一编码模块,在打开目标文件之前,对目标文件进行编码格式的探测,若目标文件中存在多种编码格式,则需要对目标问价进行统一转码处理,保证编辑器和磁盘文件中的格式一致,即保证文件和编辑器中的位置能够一一对应。
操作复原模块,用于当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
具体的,对于操作复原模块,当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,用户开始进行编辑时,对当前屏幕的文本内容进行判断,判断当前行是否有记录的操作,若有,则将该行的属性或者操作复原,复原之后可继续进行执行其它的编辑操作。
本实施例提供的一种大文件数据的编辑装置,包括:行映射模块,用于通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;文本内容填充模块,用于统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;屏幕滚动检测模块,用于实时监测当前文本编辑器的屏幕是否发生滚动;文本内容更新模块,用于在获取滚动后的屏幕的顶端行号TOPN后,判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中时,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
本实施例能够在不改变原编辑器框架的前提下提供对大文件的编辑支持。在实际编辑过程中,通过先载入空行,然后在需要进行内容显示时进行实时载入,只需占用很少内存资源,能够满足大文件的编辑需求。每次只读入50M的缓存,如果待显示的行在缓存中,则优先从缓存读取,加速局部刷新的速度,同时维持了原编辑器中部分行操作属性,能够使得用户追溯历史操作记录。
本发明的一个实施例还提供了一种大文件数据的编辑的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的大文件数据的编辑方法。
本发明的一个实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的大文件数据的编辑方法。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变形,这些改进和变形也视为本发明的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (9)
1.一种大文件数据的编辑方法,其特征在于,至少包括如下步骤:
通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;
统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;
通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;
实时监测当前文本编辑器的屏幕是否发生滚动;
若是,则获取滚动后的屏幕的顶端行号TOPN,并判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;
若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理;
若判断TOPN+SN行的文本内容不全在已载入的预设的数值单位的缓存中,则在所述行映射数组中匹配TOPN行文本内容对应的文件位置;
在该文件位置前后各载入所述预设数值单位的一半的文本内容至缓存;
从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
2.根据权利要求1所述的大文件数据的编辑方法,其特征在于,所述实时监测当前文本编辑器的屏幕是否发生滚动,还包括:
若当前文本编辑器的屏幕没有发生滚动时,监测用户对当前屏幕显示的文本内容的操作信息,并记录所述操作信息及其对应的文本内容所在行的关系。
3.根据权利要求1所述的大文件数据的编辑方法,其特征在于,还包括:
当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
4.根据权利要求1所述的大文件数据的编辑方法,其特征在于,还包括:
检测所述目标文件的编码格式;
若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中。
5.根据权利要求1所述的大文件数据的编辑方法,其特征在于,所述预设数值单位为50M。
6.一种大文件数据的编辑装置,其特征在于,包括:
行映射模块,用于通过文本编辑器将目标文件打开,并以预设的数值大小为单位逐段载入内存中,在载入内存过程中分别为所述目标文件的每行文本数据建立行映射,得到对应的行映射数组;
文本内容填充模块,用于统计所述目标文件的文本内容总行数N,在所述文本编辑器中预先插入N个换行符;通过文本编辑器将所述目标文件中的第一个预设数值单位的文本内容载入至缓存中,并根据当前文本编辑器的屏幕最大容纳行数SN填充单屏内容;
屏幕滚动检测模块,用于实时监测当前文本编辑器的屏幕是否发生滚动;
文本内容更新模块,用于在获取滚动后的屏幕的顶端行号TOPN后,判断TOPN+SN行的文本内容是否在已载入的预设的数值单位的缓存中;若判断TOPN+SN行的文本内容全都在已载入的预设数值单位的缓存中时,则从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理;若判断TOPN+SN行的文本内容不全在已载入的预设的数值单位的缓存中,则在所述行映射数组中匹配TOPN行文本内容对应的文件位置;在该文件位置前后各载入所述预设数值单位的一半的文本内容至缓存;从当前屏幕的顶行开始,从缓存中载入TOPN+SN行的文本内容,直至填充满当前屏幕,以使用户通过文本编辑器对当前屏幕显示的文本内容进行编辑处理。
7.根据权利要求6所述的大文件数据的编辑装置,其特征在于,还包括:
统一编码模块,用于检测所述目标文件的编码格式;若所述目标文件中存在不同的编码格式时,在对所述目标文件进行统一转码处理后存入临时文件中;
操作复原模块,用于当从缓存中载入TOPN+SN行的文本内容填充满当前屏幕后,判断当前屏幕的每行文本内容是否存在有记录的操作,以使用户对该行文本内容的属性复原或操作复原后,继续对该行文本内容执行编辑操作。
8.一种大文件数据的编辑的终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5中任意一项所述的大文件数据的编辑方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至5中任意一项所述的大文件数据的编辑方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010389934.4A CN111723052B (zh) | 2020-05-09 | 2020-05-09 | 一种大文件数据的编辑方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010389934.4A CN111723052B (zh) | 2020-05-09 | 2020-05-09 | 一种大文件数据的编辑方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723052A CN111723052A (zh) | 2020-09-29 |
CN111723052B true CN111723052B (zh) | 2022-05-24 |
Family
ID=72565685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010389934.4A Active CN111723052B (zh) | 2020-05-09 | 2020-05-09 | 一种大文件数据的编辑方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723052B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598143A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 图案显示方法及装置 |
CN107085567A (zh) * | 2017-04-25 | 2017-08-22 | 深圳铂睿智恒科技有限公司 | 智能终端数据布局显示的控制方法及系统 |
CN109491726A (zh) * | 2018-11-16 | 2019-03-19 | 掌阅科技股份有限公司 | 开屏文件的呈现方法、电子设备及计算机存储介质 |
CN109783454A (zh) * | 2019-01-23 | 2019-05-21 | 成都易海通科技有限公司 | 一种超大文本文件比对方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817677B2 (en) * | 2018-08-28 | 2020-10-27 | Read Twogether Ltd | Single-line display of composite-text |
-
2020
- 2020-05-09 CN CN202010389934.4A patent/CN111723052B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598143A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 图案显示方法及装置 |
CN107085567A (zh) * | 2017-04-25 | 2017-08-22 | 深圳铂睿智恒科技有限公司 | 智能终端数据布局显示的控制方法及系统 |
CN109491726A (zh) * | 2018-11-16 | 2019-03-19 | 掌阅科技股份有限公司 | 开屏文件的呈现方法、电子设备及计算机存储介质 |
CN109783454A (zh) * | 2019-01-23 | 2019-05-21 | 成都易海通科技有限公司 | 一种超大文本文件比对方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111723052A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106383880B (zh) | 一种gif文件的播放方法及系统 | |
CN107526631B (zh) | 一种任务监控方法、装置、设备和介质 | |
CN106611032A (zh) | 一种网页预加载的方法及装置 | |
JPH0711777B2 (ja) | 水平スクロールにおける動的制御のシステムと方法 | |
CN109740081B (zh) | 页面加载方法及装置 | |
CN103856507A (zh) | 网络动态图片的静态显示方法和装置 | |
CN104254849A (zh) | 支持网络文档的高速网络滚动的用户终端装置和方法 | |
CN111915705A (zh) | 图片可视化编辑方法、装置、设备和介质 | |
CN111723052B (zh) | 一种大文件数据的编辑方法及装置 | |
CN114510394A (zh) | 服务器内存的分析方法、装置及计算机可读存储介质 | |
CN117054846A (zh) | 一种芯片的可视化测试方法、系统、装置及存储介质 | |
CN105989012B (zh) | 一种页面显示方法、装置、移动终端和系统 | |
CN115421691A (zh) | 一种基于虚拟列表的数据滚动方法、装置及计算机设备 | |
CN111984197B (zh) | 计算机缓存分配方法 | |
CN113988007A (zh) | 一种文本显示方法、装置、电子设备及存储介质 | |
CN110750587B (zh) | 一种调试设备的大量高速日志处理方法 | |
CN115359828A (zh) | 一种服务器固件刷新方法、装置、终端及存储介质 | |
CN111538705B (zh) | 视频缩略图预览方法、控制服务器及介质 | |
CN115061933A (zh) | 一种性能测试数据分析方法、装置及介质 | |
CN114036431A (zh) | 页面缓存跳转方法、装置、电子设备及存储介质 | |
CN112667939A (zh) | 网页刷新方法、装置、电子设备以及存储介质 | |
CN113986439A (zh) | 一种数据显示方法及装置 | |
CN114048048A (zh) | 信息分享方法、装置、电子设备及存储介质 | |
CN111611047A (zh) | 一种移动App优化列表性能的方法及系统 | |
JP4929911B2 (ja) | 表示待ち時間短縮方法及びコンピュータシステム |
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 |