帮我写一段文件映射内存读写文件的代码
时间: 2023-08-28 14:16:41 浏览: 106
Linux内核代码学习笔记
好的,以下是一个简单的文件映射内存读写文件的代码示例:
```c++
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main() {
// 打开文件
HANDLE hFile = CreateFile("test.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
cout << "Failed to open file" << endl;
return 1;
}
// 创建文件映射
HANDLE hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
if (hMapFile == NULL) {
cout << "Failed to create file mapping" << endl;
CloseHandle(hFile);
return 1;
}
// 映射文件到内存
LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if (lpMapAddress == NULL) {
cout << "Failed to map view of file" << endl;
CloseHandle(hMapFile);
CloseHandle(hFile);
return 1;
}
// 读写文件内容
char* pData = (char*)lpMapAddress;
strcpy_s(pData, 20, "Hello, World!");
cout << "Write data to file: " << pData << endl;
// 解除映射,关闭文件和文件映射句柄
UnmapViewOfFile(lpMapAddress);
CloseHandle(hMapFile);
CloseHandle(hFile);
return 0;
}
```
这段代码包括了打开文件、创建文件映射、映射文件到内存、读写文件内容、解除映射、关闭文件和文件映射句柄等步骤。其中,我们使用 `CreateFile` 函数打开文件,使用 `CreateFileMapping` 函数创建文件映射,使用 `MapViewOfFile` 函数将文件映射到内存,使用 `UnmapViewOfFile` 函数解除映射。我们还使用了 `strcpy_s` 函数将字符串写入文件。
阅读全文