هل هناك غلاف مكتبة objc جيد لأحداث نظام الملفات/kqueue الذي يتعامل مع المشاهدة العودية بالنسبة لي؟

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

سؤال

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

أعلم أنه يمكنني القيام بذلك باستخدام أي منهما File System Events أو kqueue.لا يقدم الأول تفاصيل الملف المحدد الذي تم تغييره (يتطلب مني إنشاء لقطة للدليل الذي أشاهده ثم مسحه ضوئيًا لمعرفة الملف الذي تم تغييره).هذا الأخير لا يدعم المشاهدة العودية (يتطلب مني إضافة ساعات بشكل متكرر إلى كل ملف ودليل داخل الدليل الأصلي).

لقد بحثت عن المكتبات التي تتعامل مع متعة اللقطة/التكرار بالنسبة لي، لكن لم أتمكن من العثور على أي منها. UKKQueue يبدو وكأنه غلاف جيد للمستوى المنخفض kqueue الأشياء، ولكن لا يبدو أن تفعل العودية.الشيء نفسه بالنسبة ل GTMFileSystemKQueue. SCEvents يبدو وكأنه غلاف جيد ل File System Events ولكن لا يبدو أنه يتعامل مع اكتشاف الملف المحدد الذي تغير.

هل هناك مكتبة تفعل ما أريد ومناسبة لمشروع objc لأي من هذه التقنيات؟

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

المحلول

انتهى بي الأمر باستخدام GTMFileSystemKQueue بعد أن اكتشفت مدى سهولة التكرار بشكل متكرر عبر دليل في objc:

// Create a directory enumerator for the given top level directory
NSDirectoryEnumerator *de = [[NSFileManager defaultManager] enumeratorAtPath:dir];

// Add a kqueue on every file and folder below the top level
NSString *file;
while ((file = [de nextObject])) {
    [[GTMFileSystemKQueue alloc] initWithPath:[dir stringByAppendingString:file]
                                    forEvents:kGTMFileSystemKQueueAllEvents
                                acrossReplace:YES
                                       target:self
                                       action:@selector(fileSystemKQueue:events:)];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top