今天工作中遇到一个处理大文件的问题,开始以为是MapViewOfFile在读取文件时出了问题,所以稍微研究了下内存映射的问题。
最后分析虽然不是这方面的问题,但还是有点收获的。(网上搜集的资料整理)
http://www.yesky.com/405/1756405.shtml
http://blog.csdn.net/dsg333/article/details/8260178
/
1、为何文件映射适合处理大文件?
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数 场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对 于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的。内存文件映射是Windows的一种内存管理方法,提供了一个统一的内存管理特征,使应用程序可以通过内存指针对磁盘上的文件进行访问,其过程就如同对 加载了文件的内存的访问。通过文件映射这种使磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关联的能力,可以直接对被映射的文件进行访 问,