SetFilePointerEx()设置大文件的用法

用SetFilePointerEx()设置文件指针的位置:
函数原型:
BOOL SetFilePointerEx(
HANDLE hFile,
LARGE_INTEGER liDistanceToMove,
PLARGE_INTEGER pliNewFilePointer,
DWORD dwMoveMethod);
hFile  我们想要修改哪个文件内核对象的文件指针
liDistanceToMove  标识文件指针要移动多少个字节
pliNewFilePointer  系统会在pliNewFilePointer参数指向的LARGE_INTEGER结构体中保存文件指针的新值
dwMoveMethod  标识移动文件指针的方式,有三个值可以选择:FILE_BEGIN 标识文件指针的起始位置为文件首,
可以传给SetFilePointerEx的dwMoveMethod参数的值
值 含义
FILE_BEGIN 文件指针起始位置为文件起始位置,当调用SetFilePointerEx成功后,文件指针将指向liDistanceToMove指向的位置。
FILE_CURRENT 文件指针起始位置为当前文件指针指向的位置
FILE_END 文件指针起始位置为文件末尾

当文件指针移动超过32位时,利用SetFilePointer函数需要设置高位和低位,比较麻烦,这里可以用SetFilePointerEx()来代替。

重点讲一下LARGE_INTEGER的用法:
假设我们需要移动6836781056个字节
LONGLONG disTomove = 6836781056;
LARGE_INTEGER numberMove;
numberMove.QuadPart = disTomove;
SetFilePointerEx(hFile, numberMove, NULL, FILE_BEGIN);
其中hFile代表文件句柄,这样就可以移动大文件指针了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows重设文件大小可以使用SetFilePointerEx和SetEndOfFile函数来实现。在代码中,使用SetFilePointerEx函数将文件指针移动到指定位置,然后使用SetEndOfFile函数将文件截断或扩展到指定的大小。具体操作如下: 1. 调用SetFilePointerEx函数,将文件指针移动到目标大小的位置。参数hFileDst是文件句柄,FileSize是目标文件大小。FILE_BEGIN表示从文件起始位置开始偏移。 2. 调用SetEndOfFile函数,将文件截断或扩展到目标大小。参数hFileDst是文件句柄。 通过这两个函数的组合使用,可以实现在Windows中重设文件大小的操作。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [win32 api设置文件大小](https://blog.csdn.net/qu_tao/article/details/49431117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [在Windows电脑上修改图片内存大小的方法](https://blog.csdn.net/qq_50981222/article/details/127602546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值