快速访问大文件 - fseek ftell fsetpos fgetpos

时间:2012-03-09 11:58:38

标签: winapi fseek ftell

我面临着对千兆字节文件中所选数据的某种快速访问。一旦找到起点,后续访问将是连续的。这些文件包括每条记录前面的日期以及整个文件中日期的增加。我不想从头开始阅读文件而忽略前面的内容。我只对WINDOWS应用程序感兴趣。我想以文本模式打开文件。

我觉得我可以使用64位fseek / ftell或fsetpos / fgetpos函数进行二分类搜索。我意识到我可能会寻找换行符分隔记录的中间位置,但有人会认为你可以通过fgets调用跳过任何部分记录。

fseek提供原始SEEK_END机制,因此似乎可以与ftell一起使用来确定文件大小。我没有看到与fsetpos / fgetpos类似的设施。如果你使用fsetpos / fgetpos,怎么会得到文件大小?

_fseeki64 / _ftelli64使用int64和fsetpos / fgetpos使用的fpos_t也是int64所以我应该可以对指针进行算术运算。

或者我在错误的轨道上走了?我应该考虑其他方法吗?

1 个答案:

答案 0 :(得分:1)

_fseeki64 / _ftelli64完全按照你的意愿行事,为什么你会犹豫不决呢?你的方法很好。

相关问题