首页 > 编程 > C > 正文

C语言实现大数据文件的内存映射机制

2020-01-26 14:18:58
字体:
来源:转载
供稿:网友

C语言实现大数据文件的内存映射机制

摘要

本文主要讲述大量数据的文件的内存映射机制的实现。

1. 内存映射

内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用。

2. 实现

#include "stdafx.h" #include "windows.h" #include <iostream> #include <fstream>  using namespace std;    int main(int argc, _TCHAR* argv[]){    //// Open the file that we want to map.   HANDLE hFile = ::CreateFile(L"C:/Users/Joe WANG/Desktop/Data.txt",    GENERIC_READ | GENERIC_WRITE,    0,    NULL,    OPEN_ALWAYS,    FILE_ATTRIBUTE_NORMAL,    NULL);    // Create a file-mapping object for the file.   HANDLE hFileMapping = ::CreateFileMapping(hFile,    NULL,    PAGE_WRITECOPY,    0, 0,    NULL);    // Now map the file   PCHAR pbFile = (PCHAR)::MapViewOfFile(hFileMapping, FILE_MAP_COPY, 0, 0, 0);     // Print result   printf("%s/n", ((string)pbFile).c_str());     // Close all file handle   ::UnmapViewOfFile(pbFile);   ::CloseHandle(hFileMapping);   ::CloseHandle(hFile);     return 0; } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选