曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5671|回复: 0
打印 上一主题 下一主题

[文件与IO] SetEndOfFile() -- 设定文件末尾

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-9-13 20:28:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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() 函数将文件的末尾设置于此,所以文件的大小被裁减了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-19 03:07 , Processed in 0.069442 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表