كيف يمكنني بكفاءة استرداد عدد من الملفات في دليل؟

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

سؤال

هل هناك طريقة (على النوافذ باستخدام دلفي 2010) للحصول على عدد من الملفات في dirctory دون تعبر في الواقع عن الملفات؟

وأريد أن تنفيذ شريط تقدم خلال بعض العمليات نظام الملفات الفهرسة. لهذا السبب أريد أن أعرف كم عدد الملفات الموجودة في الدليل.

ما هي اسرع وسيلة للحصول على عدد من الملفات في دليل؟

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

المحلول

وأعتقد أن أسرع طريقة هي استخدام الأسلوب TDirectory.GetFiles تقع في IOutils.pas. ولما كان عدد من الملفات (مرئية) في دليل قد يكون مختلفا لكل مستخدم، لا يوجد سوى فرصة ضئيلة أن هناك مجرد رقم لاسترداد بطريقة أو بأخرى.

وهذا النهج FindFirst / FindNext (الذي ملفوفة في الأسلوب أعلاه) لا فعلا ملفات اجتياز، فإنه يخترق فقط إدخالات في جدول، لذلك قد يكون أسرع مما كان متوقعا.

نصائح أخرى

إذا كنت تعمل على ويندوز 7 أو سيرفر 2008 R2، فإنني أوصي استخراج وظائف FindFirst وFindMatchingFile من SysUtils إلى ما والقرصنة السابق لاستخدام FindFirstFileEx بدلا من FindFirstFile. ثم يمكنك تعيين المعلمة أعلام إضافية إلى 2 (المعرفة في MSDN كما FIND_FIRST_EX_LARGE_FETCH) مع هذا الإعداد مشروطة (Win32majorversion = 6) و (Win32minorversion> = 1)، في الوقت الراهن.

وهذا الإعداد ينتج زيادة كبيرة جدا من اجل سرعة FindFirst / FindNext حلقات على هذه OS. ابحث عن FindFirstFileEx على MSDN لمزيد من التفاصيل، كما وثائق أحدث ليست في وثائق Microsoft استردادها بواسطة دلفي مساعدة.

وTDirectory.GetFiles يبدو في نهاية المطاف إلى استدعاء FindFirst، لذلك لن يشتري لك الكثير ميزة أخرى من تبسيط التعليمات البرمجية الخاصة بك.

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