欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

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

时间:2021-08-06 09:06:05|栏目:C代码|点击:

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; 
} 

上一篇:C++解密Chrome80版本数据库的方法示例代码

栏    目:C代码

下一篇:C语言数据的存储和取出详细讲解

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

本文地址:http://www.codeinn.net/misctech/164530.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有