[发明专利]一种文件处理方法及系统有效
申请号: | 201210025896.X | 申请日: | 2012-02-07 |
公开(公告)号: | CN103246611A | 公开(公告)日: | 2013-08-14 |
发明(设计)人: | 陈卓;白子潘 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F17/30 |
代理公司: | 北京鑫媛睿博知识产权代理有限公司 11297 | 代理人: | 龚家骅 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 文件 处理 方法 系统 | ||
技术领域
本发明涉及文件处理技术领域,特别是涉及一种文件处理方法及系统。
背景技术
Windows API(Application Programming Interface,应用程序编程接口)是用来控制Windows操作系统各个部件的外观和行为的预先定义的Windows函数,操作系统通过Windows API函数获知用户的操作,凡是Windows操作系统中的应用程序,都可以调用Windows API函数。
目前Windows操作系统是通过调用设置文件指针函数(SetFilePointer)对所读取的数据进行定位,再通过调用读文件函数(ReadFile)对文件进行读取。当频繁读取文件时,系统需要频繁调用SetFilePointer函数将文件指针指向待读文件的某一区域,再调用ReadFile函数读取该区域数据,每次进行数据读取时,都需要在磁盘上进行寻道操作,每次都会产生磁盘IO(输入输出),导致读取文件速度过慢。
因此,亟需一种文件处理方案用以解决上述问题。
发明内容
本发明的目的在于提供一种文件处理方法及系统,用以解决数据读取时频繁产生磁盘IO而导致的占用系统资源的问题。
为此,本发明实施例采用如下技术方案:
本发明实施例提供一种文件处理方法,操作系统中注册有内存访问异常处理函数,该方法包括:
当接收到打开文件的请求时,申请与所请求打开的文件对应的内存区域,并且设置所述内存区域的属性为不可读写;
当接收到读取文件的请求时,访问与所请求读取的文件对应的内存区域;若内存访问失败且失败原因为所述内存区域的属性为不可读写,则通过调用和执行所述内存访问异常处理函数,从磁盘中获取所请求读取的文件数据,将获取到的文件数据存储到所述内存区域,并将所述内存区域属性设置为可读写,从所述内存区域中读取文件数据;否则,从所述内存区域中读取文件数据。
本发明实施例还提供一种文件处理系统,操作系统中注册有内存访问异常处理函数,该文件读取系统包括:接收模块、第一处理模块、第二处理模块以及获取模块,其中:
接收模块,用于接收打开文件的请求,以及接收读取文件的请求;
第一处理模块,用于当所述接收模块接收到打开文件的请求时,申请与所请求打开的文件对应的内存区域,并且设置所述内存区域的属性为不可读写;
第二处理模块,用于当所述接收模块接收到读取文件的请求时,访问与所请求读取的文件对应的内存区域,若内存访问失败且失败原因为所述内存区域的属性为不可读写,则通过调用和执行所述内存访问异常处理函数,从磁盘中获取所请求读取的文件数据,将获取到的文件数据存储到所述内存区域,并将所述内存区域属性设置为可读写,调用所述获取模块从所述内存区域中读取文件数据;否则,调用所述获取模块从所述内存区域中读取文件数据;
获取模块,用于从所述内存区域中读取文件数据。
与现有技术相比,本发明的实施例具有如下优点:
本实施例通过在操作系统中注册内存访问异常处理函数,并申请与打开的文件对应的内存区域,从该内存区域中读取文件数据,若内存访问失败且失败原因为内存区域的属性为不可读写,则通过调用和执行内存访问异常处理函数,从磁盘中获取所请求读取的文件数据。本发明实施例在读取文件的同一区域数据时,只在首次读取文件数据时产生一次磁盘IO,并将文件数据存储到内存区域中,若此后再去读取文件的这个区域数据,就会直接去内存区域中读取数据,不会再次产生磁盘IO,节约了系统资源,提高了文件读取的效率。
附图说明
图1为本发明实施例提供的文件读取方法的流程示意图;
图2为本发明实施例提供的调用内存访问异常处理函数到磁盘中读取文件数据的流程示意图;
图3为本发明实施例提供的文件读取系统的结构示意图。
具体实施方式
本发明实施例提出一种文件处理方法及系统,利用异常处理机制,将文件数据存储到内存区域中,实现文件快速读取。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210025896.X/2.html,转载请声明来源钻瓜专利网。