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