想要有MapViewOfFile内存映射写大文件的例子。
那位朋友有经验指点一下。
下面是网上的内存映射的读代码,复制到这里便于问题讨论,MapViewOfFile读和写区别在哪里。
BOOL CMemFileDlg::LoadFile(CString strFileName)
{
HANDLE hFile,hMapping;
void *basePointer;
if((hFile=CreateFile(strFileName,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0))==INVALID_HANDLE_VALUE)
{
AfxMessageBox("没有成功打开文件");
return FALSE;
}
if(!(hMapping=CreateFileMapping(hFile,0,PAGE_READONLY|SEC_COMMIT,0,0,0)))//创建一个文件映射内核对象
{
AfxMessageBox("没有成功创建文件句柄");
CloseHandle(hFile);
return FALSE;
}
if(!(basePointer=MapViewOfFile(hMapping,FILE_MAP_READ,0,0,0)))//将文件数据映射到进程空间
{
AfxMessageBox("没有成功映射");
CloseHandle(hMapping);
CloseHandle(hFile);
return FALSE;
}
CloseHandle(hMapping);
CloseHandle(hFile);
m_strText=(LPSTR)basePointer;
UnmapViewOfFile(basePointer);//从进程空间解除映射
return TRUE;
} 相关推荐
内存映射修改大文件_内存映射_MemoryFile_超大文件读写_
实际工作中遇到超大文件读写时很多系统需要等待较长时间,给用户体验不佳。本文结合源码讲解了超大文件的内存映射读写方式。内存映射方式极大的提高了读写效率,提升用户体验感。
Delphi 中内存映射对于大文件的使用
主要介绍了Delphi 中内存映射对于大文件的使用的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
VC中用内存映射文件处理大文件
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。
内存映射读写文件的方法
关于内存映射文件读写文件的方法,大家学习了解一下
C++中使用内存映射文件处理大文件
文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大多数 场合的要求,但是对于某些特殊应用领域所需要的动辄几十GB、几百GB、乃至几TB的海量存储,再以通常的文件处理方法进行处理显然是行不通的。目前,对 于上述这种大文件的操作一般是以内存映射文件的方式来加以处理的,本文下面将针对这种Windows核心编程技术展开讨论。


