曲径通幽论坛

标题: SetEndOfFile() -- 设定文件末尾 [打印本页]

作者: beyes    时间: 2011-9-13 20:28
标题: SetEndOfFile() -- 设定文件末尾
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() 函数将文件的末尾设置于此,所以文件的大小被裁减了。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2