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)

posted @ 2023-03-17 16:36  Macrored  阅读(364)  评论(0编辑  收藏  举报