SetEndOfFile函数释义以及用法
一、函数介绍
SetEndOfFile是Windows操作系统中的一个API函数,用于扩展和截断文件。函数实现是从文件的起始位置开始,截断到当前文件指针的位置,丢弃后面的数据。除了数据截断,也可以用在文件末尾添加数据,过程是先将文件截断到指定位置,然后再将数据写入文件末尾。这个函数可以通过包含Windows.h头文件来调用。
二、函数原型
BOOL SetEndOfFile(
[in] HANDLE hFile
);
hFile:要扩展或截断的文件的句柄(必须使用 GENERIC_WRITE 访问权限创建文件句柄)。
返回值:TRUE表示成功,FALSE表示失败。
三、示例
如果文件原来的大小是100字节,当前文件指针移动到第30字节的位置,然后调用SetEndOfFile函数,那么文件的大小就会变成30字节。因为SetEndOfFile函数会从当前文件指针的位置开始截断文件,将超出这个位置的部分删除,所以文件的大小就变成了当前文件指针所在的位置,也就是30字节。
int main()
{
HANDLE hFile = CreateFile("example.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
// 处理文件打开失败的情况
return 1;
}
// 将文件指针移动到文件末尾
LARGE_INTEGER liDistanceToMove;
liDistanceToMove.QuadPart = 30;
SetFilePointerEx(hFile, liDistanceToMove, NULL, FILE_BEGIN);
// 截断文件到当前文件指针的位置
SetEndOfFile(hFile);
CloseHandle(hFile);
return 0;
}
参考文章
[1] uTools中的AI对话
[2] setEndOfFile 函数 (fileapi.h)