سؤال

هل NSFileManager طريقة contentsEqualAtPath:andPath: قم بإنشاء فحص ديناميكي لمقارنة ملفين ، هل يفتح رأس الملف ومقارنة تفاصيل رأس الملف أم أنه يستخدم طريقة أخرى للمقارنة؟

لديّ قائمة تضم 200000 ملف أو نحو ذلك لمقارنة أين يمكن مقارنة الملفات المحلية بالملفات الموجودة في وحدة تخزين خادم عن بُعد. تم نسخ الملفات المحلية من وحدة تخزين الخادم عن بُعد في مرحلة ما من الماضي ، وسأمشي قائمة الملفات لمقارنة كل منها ثم نسخها على أي ملفات أحدث من وحدة تخزين الخادم البعيد إلى الجهاز المحلي (الكتابة فوق أي موجود). ليس هناك ما يضمن أن يتم إنشاء ملفات الخادم عن بُعد من قبل المستخدم المحلي (وأكثر من المحتمل ألا يكونوا).

نظرًا لأن الملفات صغيرة (حوالي 4K في الحجم) ، قد تستغرق عملية مقارنة الملف المعقد تقريبًا تقريبًا عملية النسخ.

يمكن أن تحدث هذه العملية (يمكن تصورها ولكن من غير المرجح) عدة مرات في جلسة المستخدم ، لذلك أحتاج إلى التأكد من أنني أستخدم الطريقة الأكثر فعالية للتحقق.

سيتم تشغيل العملية نفسها على مؤشر ترابط منفصل ، لذلك ليس لدي مشكلات في ربط المستخدم أثناء اكتمال العملية.

لقد بدأت التنفيذ لاختبار هذا ، لكنني كنت مهتمًا بمعرفة ما إذا كان لدى أي شخص آخر أي خبرة في مقارنة الآلاف من الملفات بسرعة من أجل تحديد الملفات التي تحتاج إلى تحديث في حالة وجود أحدث. وإذا كان لديك ، هل لديك أي مؤشرات أو عيوب لتجنبها؟

أي نصيحة موضع تقدير كبير.

تحديث

بالتفكير في هذا الأمر أكثر من ذلك ، قد يكون من المفيد الاحتفاظ بملف يتتبع آخر طابع زمني تم تحديثه من أي صور تم تغييرها والحفاظ على ملف محلي يقوم بنفس الشيء ومقارنة هذين المستندتين ... سيقوم بتحديث أكثر مع تقدمي.

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

المحلول

يبدو لي أنه بالنسبة لأسماء الملفات فقط تتم مقارنة أسماء الملفات (وأسماء الملفات للمدليات الفرعية). إنه يقارن محتوى الملف فقط إذا قمت بتمرير مسارات الملف بشكل صريح إلى الطريقة.

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