一种基于缓冲对齐的文件读写方法及系统的制作方法

文档序号:9727093阅读:296来源:国知局
一种基于缓冲对齐的文件读写方法及系统的制作方法
【技术领域】
[0001]本发明涉及网络信息安全领域,尤其涉及一种基于缓冲对齐的文件读写方法及系统。
【背景技术】
[0002]传统文件读写方法通常调用系统API (应用程序编程接口)对磁盘进行操作,获取文件指定位置和大小的数据。
[0003]传统文件读写方法在某些应用场景中会出现一些弊端。例如,在需要频繁碎片读写文件时,应用系统会频繁调用系统API获取数据,增加了调用系统API的次数和耗费的时间,降低了文件读写性能。

【发明内容】

[0004]本发明提供了一种基于缓冲对齐的文件读写方法及系统,通过在程序内部实现内部缓存区,在调用系统API获取数据之前,判断内部缓存区是否存在待读取数据,若存在,则直接返回,避免频繁调用系统API,从而过多耗费时间的问题。
[0005]本发明采用如下方法来实现:一种基于缓冲对齐的文件读写方法,包括:
若存在程序读写请求,则判断内部缓存区是否包含待读取数据,若包含,则直接返回待读取数据,否则根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍;
基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区;
根据实际需要返回待读取数据。
[0006]进一步地,所述预设单位根据需要设定,包括:文件簇或者扇区。
[0007]本发明采用如下系统来实现:一种基于缓冲对齐的文件读写系统,包括:
判断模块,用于当存在程序读写请求时,则判断内部缓存区是否包含待读取数据,若包含,则由返回模块继续执行,否则由计算模块继续执行;
计算模块,用于根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍;
读取模块,用于基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区;
返回模块,用于根据实际需要返回待读取数据。
[0008]进一步地,所述预设单位根据需要设定,包括:文件簇或者扇区。
[0009]综上所述,本发明提供了一种基于缓冲对齐的文件读写方法及系统,本发明所提供的技术方案,当存在程序读写请求时,首先判断内部缓存区是否存在待读取数据,若存在则直接返回待读取数据,否则根据文件的预设单位对齐后,调用系统API读取数据,其中读取数据包含待读取数据,其大小为预设单位的整数倍,并将其存储至内部缓存区,并将用户实际需要的待读取数据返回,而存储至内部缓存区中的数据等待后续读取。
[0010]本发明的有益效果为:本发明的技术方案利用预设单位对齐,读取相比待读取数据要大的数据存储于内部缓存区,通常是预设单位整数倍的数据,再根据需要返回实际需要的待读取数据,下次存在读写请求时,首先判断内部缓存区中是否存在所需数据,若不存在,再调用系统API读取。由于系统总是要读取数据的,本发明所述技术方案只是增加了一些内存移动时间和缓存空间,并不增加额外开销;并减少了调用系统API的次数和时间;对外显示的文件读取情况包括移动指针,只是预设单位的整数倍,隐藏了真正所需的数据内容,增加了被分析的难度;同时,在编写程序时可以不考虑频繁读写的问题,降低编写程序的复杂度。
【附图说明】
[0011]为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1为本发明提供的一种基于缓冲对齐的文件读写方法实施例流程图;
图2为本发明提供的一种基于缓冲对齐的文件读写系统实施例结构图。
【具体实施方式】
[0013]本发明给出了一种基于缓冲对齐的文件读写方法及系统的实施例,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种基于缓冲对齐的文件读写方法实施例,如图1所示,包括:
S101若存在程序读写请求,则判断内部缓存区是否包含待读取数据,若包含,则执行S104,否则执行S102 ;
S102根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍;
其中,所述预设单位根据需要设定,可以为自选的大小,可以为文件簇或者扇区。例如:预设单位是4096个字节,想要读取文件偏移1000的10个字节,那对齐后需要读取的位置和大小为0-4096个字节;如果读取偏移4095开始的10个字节,那对齐后需要读取的位置和大小为0-8192个字节。
[0014]其中,所述大小为预设单位的整数倍,最优选地为最小的整数倍;
S103基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区; S104根据实际需要返回待读取数据。
[0015]其中,例如:想要读取文件偏移1000的10个字节,将0-4096个字节的数据缓存至内部缓存区后,将需要的10个字节返回给用户。
[0016]本发明还提供了一种基于缓冲对齐的文件读写系统实施例,如图2所示,包括:
判断模块201,用于当存在程序读写请求时,则判断内部缓存区是否包含待读取数据,
若包含,则由返回模块204继续执行,否则由计算模块202继续执行;
计算模块202,用于根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍; 读取模块203,用于基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区;
返回模块204,用于根据实际需要返回待读取数据。
[0017]优选地,所述预设单位根据需要设定,包括:文件簇或者扇区。
[0018]如上所述,传统的文件读写方法需要调用系统API对磁盘进行操作,从而读取指定位置和大小的数据,但是在需要频繁碎片读写的时候,这样频繁的调用系统API将十分耗费时间。本发明所述的技术方案每次在读取数据之前,判断内部缓存区是否存在待读取数据,若存在则将待读取数据直接返回,否则基于预设单位对齐后,读取包含待读取数据的预设单位整数倍的数据,并将读取数据整体存入内部缓存区,并将待读取数据返回。当下次存在程序读写请求时,首先验证内部缓存区中是否存在所需数据,从而尽可能减少系统调用API的次数,从而提高了文件读写性能。
[0019]以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。
【主权项】
1.一种基于缓冲对齐的文件读写方法,其特征在于,包括: 若存在程序读写请求,则判断内部缓存区是否包含待读取数据,若包含,则直接返回待读取数据,否则根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍; 基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区; 根据实际需要返回待读取数据。2.如权利要求1所述的方法,其特征在于,所述预设单位根据需要设定,包括:文件簇或者扇区。3.—种基于缓冲对齐的文件读写系统,其特征在于,包括: 判断模块,用于当存在程序读写请求时,则判断内部缓存区是否包含待读取数据,若包含,则由返回模块继续执行,否则由计算模块继续执行; 计算模块,用于根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍; 读取模块,用于基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区; 返回模块,用于根据实际需要返回待读取数据。4.如权利要求3所述的系统,其特征在于,所述预设单位根据需要设定,包括:文件簇或者扇区。
【专利摘要】本发明公开了一种基于缓冲对齐的文件读写方法,包括:若存在程序读写请求,则判断内部缓存区是否包含待读取数据,若包含,则直接返回待读取数据,否则根据文件的预设单位对齐后,计算需要读取的位置和大小,所述大小为预设单位的整数倍;基于所述需要读取的位置和大小,调用系统API读取数据并缓存至内部缓存区;根据实际需要返回待读取数据。本发明还公开了一种基于缓冲对齐的文件读写系统。本发明所述技术方案可以有效减少调用系统API的次数和时间,提高了文件读写性能。
【IPC分类】G06F3/06
【公开号】CN105487811
【申请号】CN201510065674
【发明人】何公道, 沈长伟
【申请人】哈尔滨安天科技股份有限公司
【公开日】2016年4月13日
【申请日】2015年2月9日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1