Я разрабатываю приложение в Cocoa. Я хочу постоянно проверять, изменяется ли содержимое файла в определенном месте или нет (например, FileSystemWatcher
в .NET). Пожалуйста, дайте мне решениеЭквивалент FileSystemWatcher (.NET) в Cocoa
ответ
Пожалуйста, взгляните на FSEvents.
Как сказал Дидерик, FSEvents является API-интерфейсом Apple Carbon для прослушивания событий файловой системы. Кто-то создал оболочку Cocoa/Objective-C для FSEvents, которая называется SCEvents, что немного проще в использовании.
Будучи педантичным, FSEvents не является API-интерфейсом Carbon; он является частью структуры основных служб. – briankc
FSEvents отличные, но они используются для наблюдения за папками. Чтобы контролировать один файл, вы хотите проверить kqueues. Попробуйте «man kqueue» в терминале.
SCEvents - лучший вариант для тех, кто ищет решение для какао. –
FSEvents все еще для изменения каталога, хотя, похоже, SCEvents является оберткой для FSEvents. Вопрос задает вопрос о мониторинге одного файла. Kqueues гораздо лучше подходят для этого. Ссылка на SCEvents выше также ссылается на UKKQueue, которая также может быть хорошей оболочкой. –
Другим вариантом является выпить прямо из/dev/fsevents firehose. Я работаю над приложением, которое делает именно это, и оно работает очень хорошо. Вы можете получать уведомления о том, что файл изменяется, удаляется, перемещается, изменяется атрибут и т. Д. Конечно, это не опция «Какао», так как это в основном код C, но мы используем это в приложении Cocoa.
Еще ресурс по kqueues является http://developer.apple.com/documentation/Darwin/Conceptual/FSEvents_ProgGuide/KernelQueues/KernelQueues.html
Посмотрите на документацию класса NSWorkspace.
Вот пример того, как это сделать с закладками и NSFileManager, чтобы вы могли следить за файлом, если он перемещен.
Просто предложение: «дай мне решение» может быть истолковано как отрываясь слегка абразивным на английском языке, а также означает, что вы, возможно, не искали ответ для себя. Это хорошая форма для Google, прежде чем отправлять вопрос. :-) –