Frage

Ich bin mit einem schnellen Zugriff auf ausgewählte Daten in Gigabyte-Dateien konfrontiert. Sobald ich den Startpunkt suche, wäre der anschließende Zugriff sequentiell. Die Dateien enthalten ein Datum an der Vorderseite jedes Datensatzes und das Datum steigt in der gesamten Datei. Ich möchte nicht am Anfang starten und durch die Datei lesen, die Sachen an der Front ignoriert. Ich bin nur an Windows-Anwendungen interessiert. Ich möchte die Datei im Textmodus öffnen.

Es tritt mir auf, dass ich mit den 64-Bit-FSeek / Ftell oder den FSETPOS / FTAlPOS-Funktionen ein paar Binärsuche sortieren kann. Ich erkenne, dass ich in der Mitte eines mit Newline-Benzin-Rekords in der Mitte suchen könnte, aber man könnte denken, dass Sie einfach jeden Teilaufzeichnungen mit einem FGETS-Anruf überspringen könnten.

FSEEK bietet den Ursprungs-Suchmechanismus an, so dass es anscheinend mit einem Ftell verwendet werden kann, um die Dateigröße zu ermitteln. Ich sehe keine ähnliche Einrichtung mit FSSETPOS / FGETPOS. Wie würde man die Dateigröße erhalten, wenn Sie mit FSSETPOS / FETGOSPOS gegangen sind?

_fseeki64 / _FTELLI64 Verwenden Sie INT64 und FPOS_T, die von FSSetPOS / FGETPOS verwendet werden, ist auch int64, so dass ich in der Lage sein sollte, die Rechenschaft auf den Zeigern zu tun.

oder bin ich hier auf dem falschen Track weg? Sollte ich einen anderen Ansatz in Betracht ziehen?

War es hilfreich?

Lösung

_fseeki64 / _ftelli64 Tun Sie genau das, was Sie wollen, warum zögern Sie, sie zu benutzen?Ihr Ansatz ist in Ordnung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top