SetFilePointer后,读取文件数据放到buffer中,然后CreateFile写到新的文件中
时间: 2024-03-03 14:53:32 浏览: 98
在使用SetFilePointer函数设置文件指针偏移量后,可以使用ReadFile函数读取文件中指定位置的数据,并将读取到的数据保存到缓冲区中。然后,可以使用CreateFile函数创建一个新的文件,并使用WriteFile函数将缓冲区中的数据写入到新文件中。下面是一个示例代码:
```C++
HANDLE hFile = CreateFile(
L"file.txt",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
// 读取偏移量为100的位置开始的10个字节
DWORD dwPos = SetFilePointer(hFile, 100, NULL, FILE_BEGIN);
char buf[10];
DWORD dwRead;
BOOL bRet = ReadFile(hFile, buf, 10, &dwRead, NULL);
if (bRet && dwRead > 0) {
// 读取成功
// 在buf中保存了读取的数据
// 创建新文件
HANDLE hNewFile = CreateFile(
L"new_file.txt",
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
// 将buf中的数据写入新文件
DWORD dwWritten;
BOOL bRet2 = WriteFile(hNewFile, buf, dwRead, &dwWritten, NULL);
if (bRet2 && dwWritten > 0) {
// 写入成功
}
// 关闭新文件句柄
CloseHandle(hNewFile);
}
// 关闭原始文件句柄
CloseHandle(hFile);
```
这里使用了CreateFile函数创建一个名为“file.txt”的文件,并且打开方式为读写模式。然后使用SetFilePointer函数将文件指针偏移100个字节,接着定义一个长度为10的char类型数组buf作为读取数据的缓冲区,使用ReadFile函数将文件中偏移量为100的位置开始的10个字节读取到buf中,实际读取的字节数保存在dwRead中。如果读取成功,就可以在buf中获取读取到的数据。
接着,使用CreateFile函数创建一个名为“new_file.txt”的新文件,并且打开方式为写入模式。然后使用WriteFile函数将buf中的数据写入到新文件中,实际写入的字节数保存在dwWritten中。如果写入成功,就可以在新文件中获取写入的数据。
最后,需要记得关闭新文件和原始文件的句柄。
阅读全文