为什么ReadFile()之后,文件指针没有自动向后偏移?

昵称是神马 2014-03-21 09:01:52
写了一段代码读取硬盘,每次使用ReadFile读取512M(while(ReadFile()){……});发现读取出来的内容每次都是一样的,
是因为一次读取512M太多,导致ReadFile后文件指针没有自动向后偏移?还是什么原因呢?
...全文
998 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-01-07
  • 打赏
  • 举报
回复
ReadFile读完是会偏移的,检查函数是否执行成功,读查读到的长度是否是0(其中一个参数)
赵4老师 2016-01-07
  • 打赏
  • 举报
回复
请检查每个函数调用的返回值。 请出错时调用GetLastError()
fervehr 2016-01-06
  • 打赏
  • 举报
回复
引用 3 楼 alanmaths 的回复:
确实会偏移的 可以用SetFilePointerEx来获得偏移量
你好,能问几个问题吗 我用readfile连续读取数据,发现指针自动增加的值并不对。比如说,我用readfile读两次,但读的是同一个文件,但读取出来的数据并不是连续读出的,为什么啊
allenltiverson 2014-03-22
  • 打赏
  • 举报
回复
读取这么大的文件为什么不用内存映射文件呢?
昵称是神马 2014-03-22
  • 打赏
  • 举报
回复
用SetFilePointerEx来获取偏移量,发现readfile后,偏移量为0.。。。。。。
昵称是神马 2014-03-22
  • 打赏
  • 举报
回复
引用 2 楼 buyong 的回复:
SetFilePointer
引用 3 楼 alanmaths 的回复:
确实会偏移的 可以用SetFilePointerEx来获得偏移量
我看网上说是应为我createfile的时候设置了FILE_FLAG_OVERLAPPED属性,但是我仔细检查了createfile打开的地方,没有设置FILE_FLAG_OVERLAPPED属性啊,而且我readfile的最后一个参数为0,数据也读出来了,但是就是没有自动偏移,每次读取的内容都是一样的?
沙尘暗影 2014-03-22
  • 打赏
  • 举报
回复
确实会偏移的 可以用SetFilePointerEx来获得偏移量
lm_whales 2014-03-22
  • 打赏
  • 举报
回复
文件结束,没读到
shiguojie19892 2014-03-22
  • 打赏
  • 举报
回复
fseek(fp, 512, seek_end);
沙尘暗影 2014-03-22
  • 打赏
  • 举报
回复
把代码拿上来吧
buyong 2014-03-21
  • 打赏
  • 举报
回复
SetFilePointer
昵称是神马 2014-03-21
  • 打赏
  • 举报
回复
使用ReadFIle读取成功后,文件指针不是应该自动向后偏移的吗?

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧