الوصول السريع إلى ملف كبير - fseek ftell fsetpos fgetpos

StackOverflow https://stackoverflow.com//questions/9633691

  •  10-12-2019
  •  | 
  •  

سؤال

واجهت توفير نوع من الوصول السريع إلى البيانات المحددة في ملفات Gigabyte. بمجرد تحديد موقع نقطة البداية، سيكون الوصول اللاحق متتابعا. تتضمن الملفات تاريخا في مقدمة كل سجل وتزايد التاريخ خلال الملف. لا أريد أن أبدأ في البداية وقراءة الملف يتجاهل الأشياء في المقدمة. أنا مهتم فقط بتطبيقات Windows. أرغب في فتح الملف في وضع النص.

يحدث لي أنه يمكنني القيام بفرز بحث ثنائي باستخدام FSEEK / FTELL 64 بت أو وظائف FSetPOS / FGETPOS. أدرك أنني قد أسعى إلى منتصف سجل محدد حديثا، لكن المرء يعتقد أنه يمكنك ببساطة تخطي أي سجل جزئي مع مكالمة FEDS.

تقدم FSEEK الآلية الأصلية: يبدو أن ذلك يمكن استخدامه مع FTELL لتحديد حجم الملف. لا أرى منشأة مماثلة مع fsetpos / fgetpos. كيف يمكن للمرء الحصول على حجم الملف إذا ذهبت مع fsetpos / fgetpos؟

_fseeki64 / _ftelli64 استخدم Int64 و FPOPS_T المستخدمة من قبل FetPos / FGETPOS أيضا INT64، لذلك يجب أن أكون قادرا على القيام بحرصي على المؤشرات.

أو أنا خارج المسار الخطأ هنا؟ يجب أن أعتبر بعض النهج الآخر؟

هل كانت مفيدة؟

المحلول

_fseeki64 / _ftelli64 تفعل بالضبط ما تريد، فلماذا تتردد في استخدامها؟نهجك على ما يرام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top