用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代表文件句柄,这样就可以移动大文件指针了。