SetFilePointer() 函数将当前文件指针所在位置设置为文件的末尾,这样一来,当前文件指针后面的内容会被全部删掉。函数原型如下:
[Plain Text] 纯文本查看 复制代码 BOOL WINAPI SetEndOfFile(
__in HANDLE hFile
);
举例:
1. 先生成一个文本文件:D:\WindowsAPP\setendf\Debug>echo hello windows system programming > a.txt
D:\WindowsAPP\setendf\Debug>type a.txt
hello windows system programming
2. 运行下面代码的程序:
[C++] 纯文本查看 复制代码
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile;
hFile = CreateFile(_T("a.txt"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
SetFilePointer(hFile, 6, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile);
return 0;
}
3. 检查之前建立的 a.txt 中的内容:D:\WindowsAPP\setendf\Debug>type a.txt
hello
由此可见,a.txt 中从 hello 起后面的内容全部被删除了,这是因为我们一开始就从文件头移动了 6 个字节单位的文件指针了,然后再调用 SetFilePointer() 函数将文件的末尾设置于此,所以文件的大小被裁减了。 |