当一个文件1G以上的这种,使用内存文件映射会提高读写效率;

下边时段出自《windows核心编程》,读取一个大文件,然后统计里边字符出现次数的函数:

__int64 CountOs(void)
{
// Get system granularity
SYSTEM_INFO sinf;
GetSystemInfo(&sinf); // open the data file
HANDLE hFile = CreateFile(TEXT("C:\\1.TXT"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); // create the file-mapping object.
HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); DWORD dwFileSizeHight;
__int64 qwFileSize = GetFileSize(hFile, &dwFileSizeHight);
qwFileSize += (((__int64)dwFileSizeHight) << 32); // we no longer need access to the file object's handle.
CloseHandle(hFile); __int64 qwFileOffset = 0, qwNumOf0s = 0; while (qwFileSize > 0)
{
DWORD dwBytesInBlock = sinf.dwAllocationGranularity;
if (qwFileSize < sinf.dwAllocationGranularity)
dwBytesInBlock = (DWORD)qwFileSize;
PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMapping, FILE_MAP_READ, (DWORD)(qwFileOffset >> 32), (DWORD)(qwFileOffset & 0xFFFFFFFF), dwBytesInBlock); // count the number of 0s in this block.
for (DWORD dwByte = 0; dwByte < dwBytesInBlock; dwByte++)
{
if (pbFile[dwByte] == 'r')
qwNumOf0s++;
} // unmap the view; we don't want multiple views
// in our address space.
UnmapViewOfFile(pbFile); // skip to the next set of bytes in the file.
qwFileOffset += dwBytesInBlock;
qwFileSize -= dwBytesInBlock;
} CloseHandle(hFileMapping);
return qwNumOf0s;
}

如果是往里边写数据就用 memcpy把数据考入pbFile指向的内存。还有就是把读标志该成写标志;
 

最新文章

  1. [Sass]不同样式风格的输出方法
  2. bzoj4591 【Shoi2015】超能粒子炮&#183;改
  3. VMWare虚拟机设置固定ip上网方法
  4. Spark源码学习1.2——TaskSchedulerImpl.scala
  5. Qt for Android开发Android应用时的各种错误汇总(此片博文不成熟,请大家略过)
  6. ubuntu和win7 64双系统 安装
  7. div背景图片叠加
  8. 黄聪:WordPress 的 Hook 机制与原理(add_action、add_filter)
  9. CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
  10. 第一步 django的下载安装
  11. nodejs学习:sails框架的学习
  12. Android Studio错误
  13. 将apk文件添加到Android模拟器(AVD)中运行
  14. CSS3的基础知识点
  15. .NET技术+25台服务器怎样支撑世界第54大网站
  16. linux内核IDR机制详解【转】
  17. FFmpeg 常用指令集合
  18. 1. RNN神经网络模型原理
  19. 记一次揪心的MySQL数据恢复过程
  20. .Net Discovery 系列之七--深入理解.Net垃圾收集机制(拾贝篇)

热门文章

  1. 0-1knapsack
  2. LOJ数列分块 9 题解
  3. MongoDB学习总览
  4. php类精确验证身份证号码
  5. 2.1 动为进程,静为程序 -进程概论 -《zobolの操作系统学习札记》
  6. RPA SAP财务内部对账机器人
  7. sort基本用法
  8. C4C中更方便的消息管理
  9. vue2.0 双向绑定原理分析及简单实现
  10. 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]