2012-03-09 61 views
1

我正面臨着對千兆字節文件中所選數據的某種快速訪問。一旦我找到起點,隨後的訪問將是連續的。這些文件在每條記錄的前面包含一個日期,並且整個文件中的日期都會增加。我不想從頭開始閱讀文件,忽略前面的內容。我只對WINDOWS應用感興趣。我想以文本模式打開文件。快速訪問大文件 - fseek ftell fsetpos fgetpos

它發生在我身上,我可以使用64位fseek/ftell或fsetpos/fgetpos函數進行一些二進制搜索。我意識到我可能會尋找一個換行符分隔記錄的中間,但人們會認爲你可以簡單地用fgets調用跳過任何部分記錄。

fseek提供了原點SEEK_END機制,因此它似乎可以與ftell一起使用來確定文件大小。我沒有看到與fsetpos/fgetpos類似的設施。如果你用fsetpos/fgetpos去了,怎麼會得到文件大小?

_fseeki64/_ftelli64使用int64和fpos_t由fsetpos/fgetpos使用也是int64,所以我應該能夠對指針進行算術運算。

還是我在錯誤的軌道上在這裏?我應該考慮其他方法嗎?

回答

1

_fseeki64/_ftelli64做你想要的,所以你爲什麼猶豫使用它們?你的方法很好。

+0

終於完成這個了。沒遇到任何問題。因爲我的文件中的所有記錄都大小相同,所以效果很好。 – 2012-03-18 15:45:08