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

Winapi 快速访问大文件-fseek ftell fsetpos fgetpos,winapi,fseek,ftell,Winapi,Fseek,Ftell,我面临着提供某种对千兆字节文件中选定数据的快速访问。一旦我找到了起点,随后的访问将是顺序的。这些文件在每个记录的前面都包含一个日期,并且该日期在整个文件中增加。我不想从一开始就看文件,忽略前面的内容。我只对WINDOWS应用程序感兴趣。我想以文本模式打开文件 我突然想到,我可以使用64位fseek/ftell或fsetpos/fgetpos函数进行某种排序二进制搜索。我意识到我可能会寻找一条换行分隔记录的中间部分,但有人会认为可以通过fgets调用跳过任何部分记录 fseek提供了origins

我面临着提供某种对千兆字节文件中选定数据的快速访问。一旦我找到了起点,随后的访问将是顺序的。这些文件在每个记录的前面都包含一个日期,并且该日期在整个文件中增加。我不想从一开始就看文件,忽略前面的内容。我只对WINDOWS应用程序感兴趣。我想以文本模式打开文件

我突然想到,我可以使用64位fseek/ftell或fsetpos/fgetpos函数进行某种排序二进制搜索。我意识到我可能会寻找一条换行分隔记录的中间部分,但有人会认为可以通过fgets调用跳过任何部分记录

fseek提供了originseek_-END机制,因此它似乎可以与ftell一起用于确定文件大小。我没有看到fsetpos/fgetpos的类似设施。如果使用fsetpos/fgetpos,如何获得文件大小

_fseeki64/_ftelli64使用int64,fsetpos/fgetpos使用的fpos也是int64,因此我应该能够对指针进行算术运算


还是我走错了方向?我应该考虑其他方法吗?

< P> FSEKIK64/YFTELIL64完全按照你想要的去做,所以你为什么犹豫使用它们呢?你的方法很好。

\u fseeki64/\u ftelli64做你想做的事,为什么你会犹豫使用它们?你的方法很好。

终于有时间完成了。没有遇到任何问题。非常好,因为我的文件中所有的记录都差不多大。终于有时间完成了。没有遇到任何问题。效果很好,因为我文件中的所有记录大小都差不多。