文件映射对象写文件

来源:互联网 发布:网络运营商密码是什么 编辑:程序博客网 时间:2024/05/29 16:44

可以写大文件,可以将网络传输的文件快速保存到当地磁盘中。

// WriteFile.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <afxinet.h>#include <mmsystem.h>#pragma comment(lib,"Winmm.lib")int main(int argc, char* argv[]){DWORD timebegin = timeGetTime(); HANDLE hFile = CreateFile(TEXT("d:\\222.txt"),  GENERIC_READ | GENERIC_WRITE,  FILE_SHARE_READ,  NULL,  OPEN_EXISTING,  FILE_FLAG_SEQUENTIAL_SCAN,   NULL); if(hFile == NULL) {    printf("CreateFile Error\n");    return 0; } DWORD dwFileLen = GetFileSize(hFile,NULL);//获取文件长度 // 创建文件映射内核对象,句柄保存于hFileMapping HANDLE hFileMapping = CreateFileMapping(hFile,    NULL,    PAGE_READWRITE,     0,    dwFileLen,    NULL); if(hFileMapping == NULL){    printf("hFileMapping is NULL.\n");    return 0; } // 释放文件内核对象 CloseHandle(hFile);  //   偏移地址    __int64 qwFileOffset = 0; // 将文件数据映射到进程的地址空间 LPVOID  pbFile = (LPVOID)MapViewOfFile( hFileMapping,  FILE_MAP_ALL_ACCESS,  0,0,  dwFileLen); //读到内存 char *first = (char *)pbFile; printf("%c\n",*first);//输出文件第一个字符,以此验证映射是否正确 Sleep(10); DWORD timeend = timeGetTime(); printf("Time:%dms\n", timeend- timebegin); return 0;}
0 0
原创粉丝点击